Напишите программу или функцию, которая принимает в качестве входных данных два непустых списка одинаковой длины и выполняет следующие действия:
- использует элементы первого списка, чтобы получить числители,
- использует элементы второго списка, чтобы получить знаменатели,
- отображает результирующие дроби после упрощения
(2/4=>1/2)
, разделенные знаком «+», - отображает «=» и результат сложения после последней дроби.
Пример:
вход
[1, 2, 3, 3, 6]
[2, 9, 3, 2, 4]
Выход
1/2+2/9+1+3/2+3/2=85/18
О правилах
- элементы списков будут целыми положительными числами,
- элементы могут быть разделены пробелами, например:
1/2 + 2/9 + 1 + 3/2 + 3/2 = 85/18
это нормально, - завершающий перевод новой строки разрешен,
- списки могут быть взяты в других форматах, чем указано выше, например:
(1 2 3 3 6)
или{1;2;3;3;6}
, и т. д., 1
может быть выражено как1/1
,- вместо печати вы можете вернуть соответствующую строку,
- вам не нужно обрабатывать неправильный ввод,
- самый короткий код выигрывает .
[1, 2] [2, 9] [3, 3] ...
вместо?Ответы:
М ,
1211 байтЭто диадическая ссылка. Из-за ошибки, она не работает как полная программа.
F
также требуется из-за ошибки.Попробуйте онлайн!
Как это устроено
источник
Ruby 2.4,
5453 символаБлагодаря:
Rational
инициализации (-1 символ)Рубин,
585756 символовОбразец прогона:
Попробуйте онлайн!
источник
a=n.zip(d).map{|f|(f*?/).to_r};a*?++"=#{a.sum}"
в Ruby 2.4 экономит 3 байта.sum
хаха. Также я только что вспомнил, что.map{|i,j|i.to_r/j}
короче на 1 байт.to_f
и деления, но не думал делитьсяRational
с нимиFixnum
. Еще раз спасибо, @ValueInk.Mathematica, 33 байта
вход
источник
Row@@{#/#2,"+"}
же, какRow[#/#2,"+"]
?Row
было так удобно для таких вещей, как это :)Python 3 , 104 байта
9 байтов благодаря Фелипе Нарди Батиста.
Попробуйте онлайн!
источник
+'='+str(sum(c))
на,'=',sum(c)
Perl 6 ,
7773 байтаПопытайся
Попытайся
Expanded:
источник
Clojure, 71 байт
Yay для встроенных дробей!
источник
Mathematica, 61 байт
источник
JavaScript (ES6), 111 байт
Принимает списки в карри синтаксисе
(a)(b)
.источник
Java, 225 байт
N
иD
обаint[]
, контекстуализированы.Я снова использовал функцию GCD Кевина Круйссена .
Посмотрите и протестируйте онлайн!
источник
Юлия v0.4 +,
6653 байта-13 байтов благодаря Деннису
Попробуйте онлайн!
С другой стороны, если дроби могут отображаться с использованием,
//
а не/
, следующее работает для 35 байтов :источник
setlX , 103 байта
Создает функцию, вызываемую
f
где вы вставляете два списка.ungolfed:
с именованными переменными и аннотациями:
setlX не предоставляет функцию комментариев, поэтому давайте просто притворимся, что мы можем комментировать
%
источник
Perl 6,
72 байта65 байтовСобственные и автоматические рациональные числа должны упростить эту задачу, но по умолчанию строковое форматирование по- прежнему является десятичным, поэтому мы должны
.nude
( nu merator и de nominator) убить наш счет и сделать 1 уродливым :(Обновление: убрал ненужные скобки, убил больше места и использовал более умную карту. Сохраняет персонажей над решением Брэда за счет того, что не является лямбда-сабом.
источник
05AB1E ,
3534 байтаПопробуйте онлайн!
источник
Желе , 31 байт
Попробуйте онлайн!
источник
PHP> = 7.1, 190 байт
Онлайн версия
+14 Bytes для замены
return$x/$t."/".$y/$t;
сreturn$y/$t>1?$x/$t."/".$y/$t:$x/$t;
на выходеn
вместоn/1
источник
F #,
244241239 байтПопробуйте онлайн!
источник
setlX , 62 байта
ungolfed:
источник
R, 109 байт
требует
MASS
библиотеки (для своегоfractions
класса). функцияg
возвращает требуемый вывод в виде строки.Попробуйте онлайн! (Ссылка R-fiddle)
источник
MATL , 32 байта
Попробуйте онлайн!
объяснение
Посмотрим
[1, 2, 3, 3, 6]
,[2, 9, 3, 2, 4]
как на вход.источник
TI-BASIC, 100 байт
Обратите внимание
⁄
на начало, отличное от/
. Это заставляет фракции держать свои формы. Это делает работу с отрицательными фракциями.Вздох . TI-BASIC - это ужасно со строками. Если бы все, что нам нужно было сделать, это распечатать дроби, а затем их сумму, код был бы:
TI-BASIC, 12 байтов
Это означает, что 88 байтов моего кода тратятся только на форматирование ответа! Хммм .
источник
C 171 байт
Попробуйте онлайн
источник
Аксиома, 212 байт
тестовое задание
источник
Casio Basic, 161 байт
Объяснение:
A
A
итерацииB
действует как счетчик для правильного отображенияI
-й элемент списка 1 и 2 сохраняются вC
иD
C
/ переменнойD
C
/D
+E
вE
=
иE
источник
Haskell (Lambdabot),
949186 байтовПопробуйте онлайн!
Спасибо @Laikoni за
-8
байты!Ungolfed
источник
import Data.Ratio
для%
которого нет в Prelude."?"++
на'?':
."/"++d
и"="++
.tail(f>>=t)++'=':(tail.t.sum)f
tail
и=<<
вt
экономит несколько больше: Попробуйте его в Интернете!Google Sheets,
8381 байтСохранено 2 байта благодаря Тейлору Скотту
Листы автоматически добавят 2 закрывающие скобки в конец формулы.
Два массива вводятся как совокупность столбцов
A
иB
. Пустые строки под входами приведут к ошибкам.источник
))