A tarefa:
Emita um valor para x
, onde a mod x = b
para dois valores fornecidos a,b
.
Suposição
a
eb
sempre serão inteiros positivos- Nem sempre haverá uma solução para
x
- Se existirem várias soluções, produza pelo menos uma delas.
- Se não houver soluções, não produza nada ou alguma indicação de que não existem soluções.
- Incorporados são permitidos (não tão divertidos quanto outras abordagens matemáticas)
- As saídas são sempre números inteiros
Exemplos
A, B >> POSSIBLE OUTPUTS
5, 2 >> 3
9, 4 >> 5
8, 2 >> 3, 6
6, 6 >> 7, (ANY NUMBER > 6)
8, 7 >> NO SOLUTION
2, 4 >> NO SOLUTION
8, 5 >> NO SOLUTION
10,1 >> 3, 9
Isso é código-golfe , então os bytes mais baixos vencem.
code-golf
math
number-theory
code-golf
number
integer
code-golf
string
code-golf
music
code-golf
arithmetic
array-manipulation
decision-problem
code-golf
math
rational-numbers
code-golf
code-golf
graphical-output
hardware
code-golf
math
number
code-golf
string
parsing
natural-language
code-golf
tips
brain-flak
code-golf
graph-theory
code-golf
number
polynomials
king-of-the-hill
code-golf
ascii-art
kolmogorov-complexity
animation
king-of-the-hill
code-golf
tips
code-golf
ascii-art
code-golf
string
array-manipulation
data-structures
code-golf
math
number
code-golf
string
base-conversion
binary
code-golf
decision-problem
graph-theory
code-golf
math
polynomials
code-golf
kolmogorov-complexity
physics
code-golf
sequence
number-theory
code-golf
math
integer-partitions
code-golf
array-manipulation
random
permutations
code-golf
string
decision-problem
Graviton
fonte
fonte
Respostas:
JavaScript ,
2827262423 bytesExperimente online!
false
indica nenhuma solução.-1 graças @Arnauld
fonte
f=...
e depois chamarf(8)(3)
? Isso parece um pouco barato? A maneira normal de chamar uma função seriaf(8,3)
, o que tornaria sua definição de função mais longa?(8)(3)
, mas há um consenso sobre o PPCG que é permitido . Você não precisa dar um nome a ele.MATL , 6 bytes
Experimente online! Ou verifique todos os casos de teste .
Explicação
Considere entradas
8
,2
como um exemplo.fonte
Python 2 ,
4034 bytes-6 bytes graças ao Bubbler
Experimente online!
fonte
lambda a,b:[(a==b)*-~a,a-b][a>b*2]
Gelatina , 5 bytes
Retorna o mínimo válido x ou 0 se não houver nenhum.
Experimente online!
fonte
Groovy, 48 bytes (usando interno):
Eval.me(...+"g")
- Afixa "g" à entrada, tornando-a um BigInteger.modInverse(...)
- Executa a operação do módulo inverso.Java 8, 70 bytes
fonte
R ,
3328 bytesExperimente online!
-4 bytes graças a Jarko Dubbeldam.
-1 byte graças a Giuseppe.
Retorna
NA
se não houver solução. O TIO não possui a biblioteca pryr instalada; portanto, o código nesse link é usadofunction(a,b)
.fonte
pryr::f(which(a%%1:(a+1)==b))
é 4 bytes mais curto.match(b,a%%1:(a+1))
, que retornaNA
para um valor ausente.Geléia ,
1110 bytesUm programa completo usando os dois números inteiros positivos
a
eb
, e imprimindo uma lista das soluções inteiras entremin(a,b)+1
emax(a,b)+1
inclusive.Experimente online!
fonte
Mathematica 36 Bytes
Entrada:
Resultado:
fonte
a_ ±b_
. Mas é mais curto de usar emCases
vez deSelect
uma função sem nome:Cases[Range[9#],x_/;#~Mod~x==#2]&
Haskell , 33 bytes
Falha no
code.hs: out of memory (requested ??? bytes)
caso de não haver solução (o tempo limite do TIO expirou antes):Experimente online!
Obrigado em Ørjan Johansen por detectar um erro!
fonte
b
dividea
.C # (compilador Mono C #) ,
57 5626 bytesResposta do Python do Porto de Rod . Graças à WW por -1 byte.
ENORME graças a Kevin Cruijssen por -30 bytes.
Experimente online!
fonte
return
.i=>{/*code here*/}
). Nesse caso, no entanto, como você tem 2 entradas, pode ser uma função lambda de curry salvar um byte adicional (ema=>b=>{/*code here*/}
vez de(a,b)=>{/*code here*/}
). Além disso, você pode remover os parênteses em torno de suas verificações de if. No total, sem alterar nenhuma das suas funcionalidades, ele se tornaa=>b=>a-b>b?a-b:a==b?a+1:0
26 bytesPitão, 16 bytes
Experimente online!
Todos os casos de teste
Recebe entrada como
[a, b]
, erros se nenhuma solução for encontrada. Revisará se erros não forem permitidos.fonte
APL (Dyalog Unicode) , 19 bytes
Experimente online!
Golfe em andamento ...
fonte
Mathematica, 28 bytes
fonte
PHP> = 7.1, 51 bytes
Versão Online
fonte
Axioma,
147128 bytesungolf-lo e testar
Isso encontraria toda a solução, mesmo a solução de conjunto infinito ...
fonte
Pip , 9 bytes
Toma os dois números como argumentos da linha de comando. Produz a menor solução, ou nulo se não houver solução. Experimente online!
Explicação
Por exemplo, com entrada de
8
e2
:O índice baseado em 0 da primeira ocorrência
2
desta lista é3
: qual é a nossa solução.fonte
J , 14 bytes
Experimente online!
Tradução da solução Rod's Python 2 .
Como funciona
Os casos raros em que um código J pode ser traduzido diretamente para Python.
fonte
Japonês , 13 bytes
Experimente online!
Tradução da solução JS de eush77 .
O código é justamente
(U-=V)?U>V&&U:-~V
quando transpilado para JS, ondeU
eV
são os dois valores de entrada.fonte
Ruby , 31 bytes
Experimente online!
fonte
Japonês , 7 bytes
(Eventualmente) Saídas
undefined
se não houver solução.Experimente aqui
fonte
Perl 6 , 23 bytes
Experimente online!
Bloco de código anônimo que retorna uma lista de valores possíveis de
2
atéa+1
fonte
ORK , 566 bytes
Experimente online!
O bjeta R K ool. Felizmente, no entanto, não precisei usar nenhum (além dos incorporados) para esta tarefa.
fonte
F #, 40 bytes
Experimente online!
Bem direto. Lança a
System.Collections.Generic.KeyNotFoundException
se nenhuma solução puder ser encontrada.Você também pode modificá-lo para
Seq.tryFind
, que retornará umint option
, comNone
se nenhuma solução puder ser encontrada.fonte
05AB1E , 7 bytes
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
Java 8, 26 bytes
Porto da resposta C # do @Epicness ' , depois que eu joguei um pouco mais.
Experimente online.
fonte
> <> , 21 bytes
Mesmo truque que a maioria das soluções publicadas. Primeiro, preparamos todos os valores necessários na pilha e depois checamos as comparações.
Experimente online!
fonte
Sussurros v2 , 128 bytes
Experimente online!
Como funciona
Sem surpresa, ele funciona quase de forma idêntica à maioria das outras respostas: gera uma lista de números e verifica cada um quanto ao módulo inverso com o argumento.
Se você estiver familiarizado com o funcionamento da estrutura do programa Whispers, fique à vontade para pular para a linha horizontal. Caso contrário: essencialmente, o Whispers funciona em um sistema de referência linha por linha, iniciando na linha final. Cada linha é classificada como uma das duas opções. Ou é uma linha sem linha ou é uma linha de operador .
As linhas Nilad começam com{ 0 }
>
, como> Input
ou,> {0}
e retornam o valor exato representado nessa linha, ou seja,> {0}
retorna o conjunto> Input
>>
>> 1²
>> (3]
²
>> 1²
Geralmente, as linhas do operador funcionam apenas usando números como referências, mas você pode ter notado as linhas
>> L=2
e>> L⋅R
. Esses dois valoresL
eR
são usados em conjunto comEach
instruções.Each
As instruções funcionam usando dois ou três argumentos, novamente como referências numéricas. O primeiro argumento (por exemplo5
) é uma referência a uma linha de operador que utiliza uma função, e o restante dos argumentos são matrizes. Em seguida, iteramos a função sobre a matriz, onde aL
eR
na função representam os elementos atuais nas matrizes que estão sendo iteradas. Como um exemplo:Each
Experimente online!
Como este código funciona
Trabalhando contra-intuitivamente como o Whispers funciona, começamos pelas duas primeiras linhas:
>> Each 5 4
>> Each 6 7
Em seguida, pulamos para
Each
>> L⋅R
>> {10}
fonte
C #, 53 bytes (83 com cabeçalho de função)
Experimente Online
Primeira tentativa no codegolf. Provavelmente não é o melhor idioma para usar, nem a codificação mais eficiente.
fonte