Escreva um programa ou uma função que utilize duas listas não vazias do mesmo tamanho que a entrada e faça o seguinte:
- usa elementos da primeira lista para obter numeradores,
- usa elementos da segunda lista para obter denominadores,
- exibe as frações resultantes após a simplificação
(2/4=>1/2)
, separadas por "+" s, - exibe "=" e resultado da adição após a última fração.
Exemplo:
Entrada
[1, 2, 3, 3, 6]
[2, 9, 3, 2, 4]
Resultado
1/2+2/9+1+3/2+3/2=85/18
Sobre regras
- elementos das listas serão inteiros positivos,
- elementos podem ser separados por espaços, por exemplo:
1/2 + 2/9 + 1 + 3/2 + 3/2 = 85/18
está ok, - nova linha à direita é permitida,
- as listas podem ser obtidas em outros formatos além dos mencionados acima, por exemplo:
(1 2 3 3 6)
ou{1;2;3;3;6}
, etc., 1
pode ser expresso como1/1
,- em vez de imprimir, você pode retornar a sequência apropriada,
- você não precisa lidar com entradas incorretas,
- o código mais curto vence .
[1, 2] [2, 9] [3, 3] ...
alternativa?Respostas:
M ,
1211 bytesEste é um link diádico. Devido a um erro, ele não funciona como um programa completo.
F
também é necessário devido a um bug.Experimente online!
Como funciona
fonte
Ruby 2.4,
5453 caracteresGraças a:
Rational
inicialização (-1 caractere)Ruby,
585756 caracteresExemplo de execução:
Experimente online!
fonte
a=n.zip(d).map{|f|(f*?/).to_r};a*?++"=#{a.sum}"
no Ruby 2.4, você economiza 3 bytes.sum
haha. Também acabei de me lembrar que.map{|i,j|i.to_r/j}
é mais curto em 1 byte.to_f
e divisão, mas não pensado para dividirRational
comFixnum
. Obrigado novamente, @ValueInk.Mathematica, 33 bytes
entrada
fonte
Row@@{#/#2,"+"}
o mesmo queRow[#/#2,"+"]
?Row
era tão conveniente para coisas como esta :)Python 3 , 104 bytes
9 bytes graças a Felipe Nardi Batista.
Experimente online!
fonte
+'='+str(sum(c))
para,'=',sum(c)
Perl 6 ,
7773 bytesTente
Tente
Expandido:
fonte
Clojure, 71 bytes
Yay para frações embutidas!
fonte
Mathematica, 61 bytes
fonte
JavaScript (ES6), 111 bytes
Pega as listas na sintaxe de currying
(a)(b)
.fonte
Java, 225 bytes
N
eD
são ambosint[]
contextualizados.I reutilizado função GCD de Kevin Cruijssen .
Veja e teste online!
fonte
Julia v0.4 +,
6653 bytes-13 bytes graças a Dennis
Experimente Online!
Como alternativa, se as frações puderem ser exibidas usando em
//
vez de/
, o seguinte funcionará para 35 bytes :fonte
setlX , 103 bytes
Cria uma função chamada
f
onde você insere duas listas.ungolfed:
com variáveis nomeadas e anotações:
setlX não fornece um recurso de comentário, então vamos fingir que podemos comentar com
%
fonte
Perl 6,
72 bytes65 bytesOs racionais nativos e automáticos devem facilitar isso, mas a especificação padrão ainda é decimal, portanto, precisamos
.nude
( nu merator e de nominator ) que mata nossa pontuação e torna o 1 feio :(Atualização: Removidos suportes desnecessários, reduza mais espaço e use um mapa mais inteligente. Salva os caracteres sobre a solução de Brad ao custo de não ser um sub lambda.
fonte
05AB1E ,
3534 bytesExperimente online!
fonte
Gelatina , 31 bytes
Experimente online!
fonte
PHP> = 7.1, 190 bytes
Versão Online
+14 bytes para substituição
return$x/$t."/".$y/$t;
comreturn$y/$t>1?$x/$t."/".$y/$t:$x/$t;
saída emn
vez den/1
fonte
F #,
244241239 bytesExperimente online!
fonte
setlX , 62 bytes
ungolfed:
fonte
R, 109 bytes
requer a
MASS
biblioteca (para suafractions
classe). a funçãog
retorna a saída necessária como uma sequência.Experimente online! (Link R-violino)
fonte
MATL , 32 bytes
Experimente online!
Explicação
Considere
[1, 2, 3, 3, 6]
,[2, 9, 3, 2, 4]
como entrada.fonte
TI-BASIC, 100 bytes
Observe o
⁄
no início, diferente de/
. Isso faz com que as frações mantenham suas formas. Ele faz o trabalho com frações negativas.Suspiro . TI-BASIC é horrível com seqüências de caracteres. Se tudo o que tivéssemos que fazer fosse imprimir as frações e a soma delas, o código seria:
TI-BASIC, 12 bytes
Isso significa que 88 bytes do meu código são gastos apenas formatando a resposta! Hmph .
fonte
C, 171 bytes
Experimente on-line
fonte
Axioma, 212 bytes
teste
fonte
Casio Basic, 161 bytes
Explicação:
A
A
iteraçõesB
atua como um contador para a exibição corretaI
item das listas 1 e 2 salvas naC
eD
C
/ variávelD
C
/D
+E
emE
=
eE
fonte
Haskell (Lambdabot),
949186 bytesExperimente online!
Obrigado @Laikoni pelos
-8
bytes!Ungolfed
fonte
import Data.Ratio
para o%
qual não está no Prelude."?"++
por'?':
."/"++d
e"="++
.tail(f>>=t)++'=':(tail.t.sum)f
tail
e=<<
emt
salva um pouco mais: Experimente online!Planilhas Google,
8381 bytesEconomizou 2 bytes graças a Taylor Scott
As folhas adicionam automaticamente dois parênteses de fechamento ao final da fórmula.
As duas matrizes são inseridas como a totalidade das colunas
A
eB
. Linhas vazias abaixo das entradas geram erros.fonte
))