Napisz program lub funkcję, która pobiera dwie niepuste listy o tej samej długości co dane wejściowe i wykonuje następujące czynności:
- używa elementów pierwszej listy, aby uzyskać liczniki,
- wykorzystuje elementy drugiej listy, aby uzyskać mianowniki,
- wyświetla wynikowe ułamki po uproszczeniu
(2/4=>1/2)
, oddzielone znakami „+”, - wyświetla „=” i wynik dodania po ostatniej frakcji.
Przykład:
Wejście
[1, 2, 3, 3, 6]
[2, 9, 3, 2, 4]
Wynik
1/2+2/9+1+3/2+3/2=85/18
O zasadach
- elementy list będą dodatnimi liczbami całkowitymi,
- elementy można oddzielić spacjami, np .:
1/2 + 2/9 + 1 + 3/2 + 3/2 = 85/18
jest w porządku, - końcowy znak nowej linii jest dozwolony,
- listy mogą być pobierane w innych formatach niż powyżej, np .:
(1 2 3 3 6)
lub{1;2;3;3;6}
itp., 1
można wyrazić1/1
,- zamiast drukowania możesz zwrócić odpowiedni ciąg,
- nie musisz obsługiwać złych danych wejściowych,
- najkrótszy kod wygrywa .
[1, 2] [2, 9] [3, 3] ...
zamiast tego możemy otrzymać ułamki ?Odpowiedzi:
M ,
1211 bajtówTo jest diademiczny link. Z powodu błędu nie działa jako pełny program.
F
jest również wymagane z powodu błędu.Wypróbuj online!
Jak to działa
źródło
Ruby 2.4,
5453 znakiDzięki:
Rational
inicjalizacji (-1 znaków)Ruby,
585756 znakówPrzykładowy przebieg:
Wypróbuj online!
źródło
a=n.zip(d).map{|f|(f*?/).to_r};a*?++"=#{a.sum}"
w Ruby 2.4 oszczędza 3 bajty.sum
haha. Właśnie sobie przypomniałem, że.map{|i,j|i.to_r/j}
jest krótszy o 1 bajt.to_f
i podziału, ale nie myślałem o dzieleniuRational
sięFixnum
. Jeszcze raz dziękuję, @ValueInk.Mathematica, 33 bajty
Wejście
źródło
Row@@{#/#2,"+"}
to samo coRow[#/#2,"+"]
?Row
to takie wygodne :)Python 3 , 104 bajty
9 bajtów dzięki Felipe Nardi Batista.
Wypróbuj online!
źródło
+'='+str(sum(c))
na,'=',sum(c)
Perl 6 ,
7773 bajtówSpróbuj
Spróbuj
Rozszerzony:
źródło
Clojure, 71 bajtów
Tak dla wbudowanych frakcji!
źródło
Mathematica, 61 bajtów
źródło
JavaScript (ES6), 111 bajtów
Pobiera listy w składni curry
(a)(b)
.źródło
Java, 225 bajtów
N
iD
oba sąint[]
kontekstualizowane.Ponownie wykorzystałem funkcję GCD Kevina Cruijssena .
Zobacz i przetestuj online!
źródło
Julia v0.4 +,
6653 bajtów-13 bajtów dzięki Dennisowi
Wypróbuj online!
Alternatywnie, jeśli ułamki mogą być wyświetlane przy użyciu
//
zamiast/
, następujące czynności działają dla 35 bajtów :źródło
setlX , 103 bajty
Tworzy funkcję o nazwie, w
f
której wstawiasz dwie listy.bez golfa:
z nazwanymi zmiennymi i adnotacjami:
setlX nie zapewnia funkcji komentowania, więc udawajmy, że możemy komentować
%
źródło
Perl 6,
72 bajtów65 bajtówNatywne i automatyczne racjonalne rozwiązania powinny to ułatwić, ale domyślna łańcuchowość wciąż jest dziesiętna, więc musimy
.nude
( nu merator i de nominator), co zabija nasz wynik i sprawia, że 1 brzydki :(Aktualizacja: Usunięto niepotrzebne nawiasy, zabij więcej miejsca i korzystaj z inteligentniejszej mapy. Zapisuje postacie nad rozwiązaniem Brada kosztem nie bycia subem lambda.
źródło
05AB1E,
3534 bytesTry it online!
źródło
Jelly, 31 bytes
Try it online!
źródło
PHP>=7.1, 190 Bytes
Online Version
+14 Bytes for replacement
return$x/$t."/".$y/$t;
withreturn$y/$t>1?$x/$t."/".$y/$t:$x/$t;
to outputn
instead ofn/1
źródło
F#,
244241239 bytesTry it online!
źródło
setlX, 62 bytes
ungolfed:
źródło
R, 109 bytes
requires the
MASS
library (for itsfractions
class). the functiong
returns the required output as a string.Try it online! (R-fiddle link)
źródło
MATL, 32 bytes
Try it online!
Explanation
Consider
[1, 2, 3, 3, 6]
,[2, 9, 3, 2, 4]
as input.źródło
TI-BASIC, 100 bytes
Note the
⁄
at the beginning, different from/
. This makes the fractions hold their forms. It does work with negative fractions.Sigh. TI-BASIC is horrible with strings. If all we had to do was print the fractions, and then their sum, the code would be:
TI-BASIC, 12 bytes
That means that 88 bytes of my code is spent just formatting the answer! Hmph.
źródło
C, 171 bytes
Try Online
źródło
Axiom, 212 bytes
test
źródło
Casio Basic, 161 Bytes
Explanation:
A
A
iterationsB
acts as a counter for correct displayingI
'th item of List 1 and 2 saved inC
andD
C
/ VariableD
C
/D
+E
inE
=
andE
źródło
Haskell (Lambdabot),
949186 bytesTry it online!
Thanks @Laikoni for
-8
bytes!Ungolfed
źródło
import Data.Ratio
for%
which is not in Prelude."?"++
with'?':
."/"++d
and"="++
.tail(f>>=t)++'=':(tail.t.sum)f
tail
and=<<
intot
saves some more: Try it online!Google Sheets,
8381 bytesSaved 2 bytes thanks to Taylor Scott
Sheets will automatically add 2 closing parentheses to the end of the formula.
The two arrays are input as the entirety of columns
A
andB
. Empty rows below the inputs will throws errors.źródło
))