Desafio
Dando uma soma aritmética válida com alguns números ausentes, produza a expressão completa.
Exemplo:
1#3 123
+ 45# => + 456
-------- --------
579 579
Entrada
- O formato da expressão pode ser uma matriz
["1#3", "45#", "579"]
, uma sequência"1#3+45#=579"
ou 3 entradasf("1#3","45#","579")
Resultado
- Igual à entrada
- Você não precisa produzir o resultado
Notas
- Os números ausentes serão representados usando
#
ou qualquer outro caractere não numérico constante desejado - Suponha que o resultado não terá um número ausente
- Suponha que Entrada / Saída consistem em 2 termos e um resultado final
- Suponha que ambos os termos> 0 e resultado> = 2
- Pode haver várias soluções. Você pode produzir qualquer pessoa desde que a soma corresponda ao resultado
Casos de teste com possíveis saídas (formato bonito)
#79 879
+ 44# => + 444
-------- --------
1323 1323
5#5 555
+ 3#3 => + 343
-------- --------
898 898
# 1
+ # => + 1
-------- --------
2 2
### 998
+ ### => + 1 PD: there are a lot of possible outputs for this one
-------- --------
999 999
123 123
+ # => + 1
-------- --------
124 124
9 9
+ #6 => + 46
-------- --------
55 55
#123651 1123651
+ #98# => + 7981
------------ -----------
1131632 1131632
Padrão code-golfe regras se aplicam
code-golf
arithmetic
integer
Luis felipe De jesus Munoz
fonte
fonte
=
trocados? por exemplo579=1#3+45#
Respostas:
Braquilog ,
2216 bytesExperimente online!
-6 bytes graças a @Fatelize
Explicação
fonte
{"#"∧Ị∋|}ᵐ²ịᵐ.k+~t
é 4 bytes mais curto. Não sei por que você fez algo tão complicado no seu mapa.Ṣ
vez de"#"
que salvará mais dois bytes.JavaScript (ES6),
7457 bytesToma de entrada como
(a)(b)(result)
, onde um e b são cadeias com.
para números desconhecidos e resultado é um número inteiro. Retorna uma matriz de 2 números inteiros.Experimente online!
Comentado
fonte
-~n
que não podia ser juston+1
e comoF=(c,n)=>
era usado. Agora que você adicionou uma explicação, tudo faz sentido.c
é a terceira entrada,n
é indefinida (e~undefined
se torna-1
diferenteundefined+1
). Tudo claro agora (e não é algo que eu possa portar para Java, infelizmente, e foi por isso que tentei entender o xD). PS: Já votei ontem ontem, então acabei de votar em uma das suas outras respostas (que ainda não votei, não há muito disponível ..); pnull
, convertendo-o manualmente para-1
. No entanto, o Java possui um limite StackOverflow recursivo (muito) limitado, portanto, usar um método recursivo com aleatoriedade, esperando que acabe correto em cerca de 1024 chamadas recursivas, não funcionará de maneira alguma em Java. Ah bem. Eu votei na sua dica. Tenha um bom fim de semana! :)###+###=999
, suas chances são de 1 em 1000. Portanto, com 1024 iterações, você deve ter sucesso um pouco mais frequentemente do que falha. :)Matlab,
143134132119 119115 bytes-4 bytes graças a @Luismendo
Experimente Online
Muito grande e muito estúpido. Ele simplesmente substitui todos
#
por dígitos aleatórios até encontrar os corretos.fonte
R ,
6751 bytesRock simples e escalas horrivelmente, apenas grep todas as combinações de soma. Usar "." para dígitos desconhecidos. Ele não encontrará a mesma resposta que o caso de teste número 4, mas fornecerá uma resposta possível, que segue a letra das regras fornecidas.
-16 bytes grepping após formar a saída e substituir
paste
pelo?
operador.Experimente online!
fonte
?
... Acho que é o primeiro. a propósito, esqueci-me se já lhe contei, mas estamos tentando ser nomeado para o idioma de setembro do mês - você pode votar se ainda não o fez.Carvão , 32 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Empurre duas cordas
0
s para a lista vazia predefinidau
para obter o loop while.Repita enquanto a soma da conversão dos valores
u
para inteiro não é igual ao resultado desejado.Crie uma matriz das duas entradas e mapeie sobre ela.
Substitua cada
#
um por um dígito aleatório e atribua o resultado novamente au
.Imprima o resultado justificado. (Justificado à esquerda seria apenas
υ
para uma economia de 4 bytes).fonte
Gelatina , 20 bytes
Experimente online!
fonte
05AB1E (legado),
2320 bytes-3 bytes graças a @Emigna .
Dígitos desconhecidos são espaços (
). A ordem de entrada deve ser: resultado esperado; corda mais longa; corda mais curta.
Experimente online .
Explicação:
fonte
Perl 6 ,
8174 bytes-7 bytes graças ao nwellnhof!
Experimente online!
Bloco de código anônimo que recebe entrada como uma string que contém uma expressão aritmética, por exemplo, "12 # + 45 # = 579". Substitui cada uma
#
com possíveis permutações de dígitos, substitui=
por==
e localiza o primeiro resultado válido.Explicação:
fonte
S:g[\#]=$a[$++]
vez detrans
por 74 bytes .S///
esse tipo de sintaxe! Obrigado!APL (Dyalog Unicode) , 22 bytes
Experimente online!
fonte
Java 10,
203198193 bytesExperimente online.
Explicação:
fonte
C (gcc) ,
228213203172170 bytes-15 Bytes graças a @ceilingcat . Eu nunca usei
index
antes.-10 bytes graças a @Logem . Magia do pré-processador
chamada refatorada para
exit(0)
with puts como parâmetro.Experimente online!
fonte
-DX=c=index(v
pelo-DX=(c=index(v
link TIO no meu último comentário.C # .NET,
225220196 bytesPorta da minha resposta Java 10 .
(Estou muito enferrujado no golfe em C # .NET, por isso posso definitivamente jogar golfe.)
-3 bytes implicitamente graças a @ user82593 e esta nova dica de C # que ele adicionou .
-29 bytes graças a @hvd .
Experimente online.
Explicação:
fonte
using System;
vez disso, é mais curto quenamespace System{}
.using System.*;
similar às importações em Java, mas isso não funcionou. Esqueci que tinha que remover a.*
parte .. Obrigado pelos -5 bytes.int.Parse
(-4), usarnew System.Random()
(+7) e soltarusing System;
(-13) para salvar outros 10 bytes. :) Além disso, você não precisa.ToCharArray()
, isso tira mais 14 bytes.int.Parse
vsSystem.Int32.Parse
... É basicamente o mesmo queSystem.String
estring
.. E não sabia que era possível fazer um loop sobre os personagens sem o.ToCharArray()
. Obrigado por mais -24 bytes. : DPython 3 ,
121155152149 149 bytesExperimente online!
+34 Nova solução com regex para contornar o fato de que o python não suporta números com zeros à esquerda.
-3 graças a @Jonathan Frech
A solução antiga não funciona se # for o primeiro caractere de qualquer número (porque eval não aceita zeros à esquerda) e, portanto, é inválido :(
Experimente online!
fonte
PHP, 112 bytes
solução de força bruta coxa
pega a string como entrada, para na primeira solução. Execute como pipe
-nR
ou experimente online .fonte
Powershell, 91 bytes
O script encontra todas as soluções. O número total de iterações é 10 em relação ao número de caracteres
#
. A profundidade da recursão é igual ao número de caracteres#
.Script de teste:
Powershell, 'Suponha que ambos os termos> 0' sejam obrigatórios, 110 bytes
fonte