Desafio
Calcule a soma estranha de dois números naturais (também conhecidos como adição lunar):
Dado A=... a2 a1 a0
e B=... b2 b1 b0
dois números naturais escritos na base decimal, a soma estranha é definida, com base na operação máxima , como:
A+B=... max(a2,b2) max(a1,b1) max(a0,b0)
... a2 a1 a0
+ ... b2 b1 b0
----------------------------------------
... max(a2,b2) max(a1,b1) max(a0,b0)
Entrada
Dois números naturais
É permitido todo o seguinte:
- Cordas com preenchimento zero (mesmo comprimento)
- Cordas acolchoadas no espaço esquerdo
- Cordas acolchoadas no espaço direito
- Matriz de duas cordas acolchoadas
- Conjunto de caracteres 2D preenchido com espaço
Resultado
Um número natural
Exemplo
1999+2018-->2999
17210+701-->17711
32+17-->37
308+250-->358
308+25-->328
Regras
- A entrada e a saída podem ser fornecidas em qualquer formato conveniente (escolha o formato mais apropriado para o seu idioma / solução).
- Não há necessidade de lidar com valores negativos ou entrada inválida
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
code-golf
math
arithmetic
mdahmoune
fonte
fonte
Respostas:
Python 2 , 20 bytes
Experimente online!
E / S como listas de dígitos com preenchimento 0.
fonte
Geléia , 1 byte
Experimente online!
E / S como listas de dígitos com preenchimento 0.
fonte
R ,
68bytes 65Experimente online!
Entrada como números inteiros, saída como lista de dígitos.
Se listas de dígitos com preenchimento zero fossem permitidas, simplesmente
pmax
seria suficiente.fonte
MATL , 2 bytes
O formato de entrada é: matriz de caracteres 2D de duas linhas, cada uma correspondente a uma linha, com o número menor preenchido à esquerda com espaços. Por exemplo
que em MATL é definido como
Experimente online!
Explicação
fonte
Python 2 ,
736056 bytesExperimente online!
Recebe a entrada como duas cadeias e retorna uma lista de dígitos
Alternativo:
Recebe entrada como dois números inteiros; mesma saída
Python 2 ,
6059 bytesExperimente online!
fonte
Java 10,
7857 bytesEntrada como duas matrizes de caracteres preenchidos com espaço.
Modifica a primeira matriz de entrada em vez de retornar uma nova para salvar 21 bytes (graças a @ OlivierGrégoire ).
Experimente online.
Explicação:
fonte
a->b->{for(int i=a.length;i-->0;)if(a[i]<b[i])a[i]=b[i];}
( 57 bytes ). Reutilizea
como saída para obter muitos bytes.J ,
1412 bytes-2 bytes graças a Jonah
Experimente online!
Entrada e saída como lista (s) de dígitos
fonte
(>./@,:)&.|.
. Experimente online!Japonês,
987 bytesRecebe a entrada como uma matriz de matrizes de dígitos.
Tente
Se aceitar matrizes preenchidas com zero como entrada é permitida (atualmente ela se enquadra em um "formato conveniente", mas desconfio que essa não seja a intenção do desafiante), isso pode ser de 3 bytes.
Tente
fonte
y
enquanto? Eu não sabia disso. Aqui está outra maneira , também de 8 bytes.'
. Não sei se isso salvaria bytes, mas é definitivamente legal.Perl 6 , 37 bytes
Experimente online!
Recebe a entrada como uma lista de listas de dígitos.
fonte
05AB1E ,
9 65 bytes-3 graças a Emigna
-1 graças a Shaggy
Recebe entrada como uma lista de listas de dígitos
Experimente online! ou Experimente todos os casos de teste
fonte
€R
pode serí
. Além disso, eu não acho que você precisa€þ
como:number > space
€þ
e não funcionou, mas agora ele faz ...J
do final?Perl 6 , 15 bytes
Experimente online!
Aceita entrada como uma lista de matrizes de caracteres preenchidas com espaço, embora para esse desafio o formato de entrada relaxado o torne bastante chato. Como alternativa, aqui está o programa que pega uma lista de dois números inteiros:
Perl 6 , 41 bytes
Experimente online!
Se você não se importa com uma quantidade enorme de espaço em branco, também pode remover o
+
da frente.Explicação:
fonte
Haskell , 40 bytes
Entrada / saída como strings, experimente online!
Explicação
A função
p
substitui cada caractere por um espaço, usandop b++a
e,p a++b
portanto, tem o mesmo comprimento. Dessa forma, podemos usarzipWith
sem perder nenhum elemento, usandomax
com ele funciona porque um(espaço) tem um ponto de código mais baixo do que qualquer um dos caracteres
['0'..'9']
.fonte
JavaScript (ES6),
5149 bytesNota: esta resposta foi publicada antes que os formatos de E / S soltos fossem explicitamente permitidos. Com matrizes de dígitos preenchidas com zero, isso pode ser feito em 33 bytes (mas é muito menos interessante, IMHO).
Recebe a entrada como dois números inteiros. Retorna um número inteiro.
Experimente online!
Comentado
Versão alternativa
Mesmo formato de E / S.
Experimente online!
fonte
Tcl , 156 bytes
Experimente online!
Não sou muito golfista, mas tive que tentar. Golf mais tarde!
fonte
Lote, 120 bytes
Recebe a entrada como parâmetros da linha de comando. A versão de 188 bytes funciona em números inteiros arbitrários:
Recebe entrada em STDIN.
fonte
Galho , 125 bytes
Quando vi esse desafio, pensei: "deixe-me usar uma linguagem de modelo! Com certeza é uma boa opção"
Eu estava errado ... tão errado ... ... Mas foi divertido!
Isso requer que "strict_variables" esteja definido como
false
(valor padrão).Para usar essa macro, você pode fazer o seguinte:
Deve exibir 167.
Você pode tentar isso em https://twigfiddle.com/rg0biy
("strict_variables" está desativado, está ativado por padrão no site)
fonte
Casca , 5 bytes
Aceita convenientemente a entrada / saída como lista de dígitos, tente on-line ou verifique tudo!
Explicação
fonte
Stax , 5 bytes
Execute e depure
Este programa recebe entrada como uma matriz de seqüências de caracteres.
Execute este
Esta é a primeira vez que vi um uso da instrução overlay "in the wild".
fonte
SNOBOL4 (CSNOBOL4) , 153 bytes
Experimente online!
fonte
Pitão, 5 bytes
Recebe entrada como matriz de duas seqüências de caracteres preenchidas com espaço.
Experimente aqui .
fonte
Japonês , 4 bytes
A entrada é tomada como uma matriz de duas matrizes numéricas preenchidas com 0.
Experimente online!
fonte
Ceilão, 55/99
Com seqüências de 0 ou espaço preenchidas do mesmo comprimento (retornando uma iterável de caracteres):
Com strings preenchidas com 0 ou espaço (retornando uma String):
Com cadeias de comprimento possivelmente diferente (retornando uma String):
fonte
C # (.NET Core) , 57 bytes
-1 bytes adicionando currying
Experimente Online
fonte
Ruby , 25 bytes
Experimente online!
Lista pré-acolchoada blá blá. (Embora pareça um pouco trapaceiro.)
fonte
Retina 0.8.2 , 39 bytes
Experimente online! O link inclui o conjunto de testes. A versão anterior de Retina 1 de 45 bytes aceita cadeias de caracteres sem preenchimento:
Experimente online! O link inclui o conjunto de testes. Explicação:
Coloque os dois valores no mesmo comprimento. (Apenas Retina 1. Existem maneiras de emular isso na Retina 0.8.2, mas elas não são muito eficientes.)
Transponha os valores.
Classifique cada par em ordem.
Exclua todos os dígitos baixos e as novas linhas excedentes.
fonte
Carvão , 8 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
A versão de 10 bytes "adiciona" qualquer número de cadeias acolchoadas:
Experimente online! Link é a versão detalhada do código. A versão anterior de 14 bytes aceita cadeias não preenchidas:
Experimente online! Link é a versão detalhada do código. Explicação:
A versão de 17 bytes "adiciona" qualquer número de strings:
Experimente online! Link é a versão detalhada do código.
fonte
Mathematica 50 bytes
a = 543; b = 791;
(* 793 *)
fonte