Escreva um programa ou função que receba um número inteiro positivo. Você pode assumir que a entrada é válida e pode tomá-la como uma sequência. Se o número for qualquer um
123
234
345
456
567
678
789
em seguida, imprima um valor de verdade . Caso contrário, imprima um valor falso . Por exemplo, as entradas
1
2
3
12
122
124
132
321
457
777
890
900
1011
1230
1234
todos devem resultar em saída falsa. (A entrada não terá zeros à esquerda, portanto você não precisa se preocupar com coisas assim 012
.)
O código mais curto em bytes vence.
code-golf
number
decision-problem
integer
Passatempos de Calvin
fonte
fonte
012
?012
seria falso, mas você pode assumir que não é uma entrada.Respostas:
Python, 24 bytes
Uma função anônima que gera 0 ou 1. Cria a lista
[123, 234, 345, 456, 567, 678, 789]
e conta quantas vezes a entrada aparece.fonte
Python, 24 bytes
Apenas um monte de encadeamento de condições.
fonte
lambda
eu nem imaginaria que era Python. Isso é horrível.Haskell, 22 bytes
Uma função anônima. Gera a lista com espaçamento uniforme
[123, 234, 345, 456, 567, 678, 789]
e verifica se a entrada é um elemento.fonte
Braquilog , 9 bytes
Experimente online! ou Verifique todos os casos de teste.
Créditos a Dennis pelo algoritmo .
Em inglês, "(prove que) o primeiro dígito da entrada, concatenado para si mesmo duas vezes, adicione 12, ainda é a entrada".
fonte
Python 2, 25 bytes
Teste em Ideone .
fonte
Flacidez cerebral 76 + 3 = 79 bytes
Esta resposta é um golfe desta resposta. Na verdade, eu não sei bem como minha resposta funciona, mas DJMcMayhem fornece uma boa explicação em sua resposta original e minha resposta é uma modificação na dele.
É executado com o sinalizador -a ascii adicionando 3 bytes.
Explicação (das sortes)
Começando com a solução de trabalho original:
Eu corro isso através de um algoritmo simples de golfe que escrevi e recebo:
A partir daqui, vejo a seção que se
<({}[()()()])>{}
multiplica essencialmente por uma que torna igual a{}[()()()]
redução de todo o código para:Por fim, os negativos podem ser combinados:
fonte
Brainfuck, 32 bytes
Experimente online!
Créditos ao Lynn pelo núcleo do algoritmo.
fonte
Gelatina , 6 bytes
Experimente online! ou verifique todos os casos de teste .
Como funciona
fonte
ast.literal_eval
respeito,012
não representa um número inteiro .05AB1E , 5 bytes
Explicação
Experimente online
fonte
2Å1
vez deXX,
, apenas para os pedaços de menos comandos (4 em vez de 5).Å
é gravável no meu teclado (ao contrário de‚
), o que é um benefício :) #‚
(não o que,
eu usei) também não possui uma sequência de teclas de composição, enquantoÅ
estiveroA
em um teclado americano.MATL , 8 bytes
Experimente online!
Isso imprimirá
1 1
para uma entrada verdadeira e uma matriz com uma0
para um valor falso, já que isso é falso no MATL.Explicação:
fonte
d1=Ep4=
(eu não tenha testado exaustivamente)dTTX=
por 5 bytesT
T
é o literaltrue
eF
éfalse
. VizinhoT
eF
ficar juntos, assimTT
é[true true]
, que para esses fins é equivalente a[1 1]
. Veja a seção 4.3 da especificaçãoJava 7, 46 bytes
Depois de tentar várias coisas com a Freira Furada no bate-papo, isso parece ser o mais curto. Às vezes, você só precisa fazer as coisas da maneira direta: /
Explicação:
fonte
Perl 6 ,
35 29 24 2119 bytesExplicação:
Uso:
fonte
Retina , 26
Saídas 1 para verdade e 0 para falsey.
Experimente on-line (primeira linha adicionada para permitir a execução de vários casos de teste).
fonte
Ruby,
323025 + 2 = 27 bytes+2 bytes para
-nl
sinalizadores.Recebe entrada em STDIN e imprime
true
oufalse
.Veja em repl.it: https://repl.it/DBn2/2 (Clique em ▶ ️ e digite entrada no console abaixo.)
fonte
-a
simsplit
, nãochop
? Além disso, o que&
faz? Estou usando um Ruby mais antigo que gera um erro. Enfim, ele funciona perfeitamente em 26 bytes sem ele.-l
, não-a
.&.
é o operador "navegação segura", adicionado no Ruby 2.3. Sem ele, entradas como19
, que não são substrings"123456789"
, gerarão um NoMethodError.Brain-Flak , 99 bytes
Experimente online!
São 98 bytes de código
+1
para o-a
sinalizador.Isso imprime
1
por verdade, e um0
ou nada (que é equivalente a 0) para falsificaçãofonte
...)({}
mas variam. Se você pressionar e saltar sem usar o valor, poderá condensá-lo em uma coisa. Posso vincular você a uma versão do seu código com todas essas informações, se você quiser.Flacidez Cerebral , 114 bytes
Experimente online!
Versão correta (no espírito da pergunta): pega o número inteiro como entrada, gera 0 para falsey e 1 para verdade.
Isso não é pilha limpa.
Algoritmo
Deixe a entrada ser
n
.A saída é verdadeira se
(n-123)(n-234)(n-345)(n-456)(n-567)(n-678)(n-789)=0
.Calculei esses sete números primeiro subtraindo 12 e depois subtraí 111 7 vezes, e depois calculei o NÃO duplo lógico desses sete números e os somei.
Para resultados de verdade, a soma é 6; para resultados de falsey, a soma é 7.
Então, subtraio a soma de 7 e produzo a resposta.
fonte
R,
3022 bytesNão é particularmente emocionante; verifique se a entrada está na sequência fornecida por 12 + 111k, onde k é cada um de 1 a 7. Observe que
:
precede*
que a multiplicação ocorra após a geração da sequência.fonte
C # (compilador interativo do Visual C #) ,
41 3023 bytesPrimeiro envio de código-golfe, seja gentil :)
Experimente online!
fonte
return
palavra-chave: 30 bytesBrainfuck, 43 bytes
Bah, eu não sou bom nisso. Saídas
\x01
Se a saída for uma das cordas123
,234
, ...,789
; saídas\x00
caso contrário.(Eu venci o Java 7, no entanto ...)
Experimente online!
fonte
[>>]<
? Isso não poderia ser apenas>
?JavaScript ES6, 26 bytes
n=>1>(n-12)%111&n>99&n<790
Isso tira vantagem do fato de eu estar usando operadores lógicos em bits no que são essencialmente booleanos (que são baseados em bits!)
Agradecimentos a Titus por salvar 2.
fonte
(n-12)
en>99
Excel -
62573531 bytesCom base na resposta de Anastasiya-Romanova, mas retornando os
TRUE/FALSE
valores do Excel .Além disso, podemos chegar a
desde que ambos
RIGHT
eLEFT
retornam um único caractere por padrão.E, inspirado por algumas das soluções Python:
Obrigado a Neil por mais 4 bytes ...
fonte
N<900
economiza um byte; nesse caso, você também pode usar emN>99
vez deLEN(N)=3
.=REPT(LEFT(N),3)+12=N
ondeN
é o nome da célula de referência.Braquilog (2), 7 bytes
Experimente online!
Explicação
Como um programa completo, obtemos um retorno verdadeiro, se todas as afirmações se mantiverem, um retorno falsey, se houver alguma falha.
fonte
CJam,
139 bytesExperimente online!
Explicação
fonte
2345
Excel - 104 bytes
Explicação:
A sintaxe da fórmula SE no Excel é:
Se o comprimento da entrada
N
, onde é o nome da célula de referência, for menor que 3, ele retornará o Falsy . Caso contrário, se o comprimento da entradaN
for 3 e a diferença do segundo e do primeiro dígito e a diferença do terceiro e do segundo dígitos forem iguais a 1, retornará Truthy .fonte
=REPT(LEFT(N),3)+12=N
ondeN
é o nome da célula de referência.Dyalog APL , 10 bytes
Aceita argumento de string.
1 1≡
É {1, 1} idêntico a¯2-/
a diferença inversa entre pares de⍎¨
cada caractere tomado como um número?TryAPL online! (
⍎
foi copiadoe
por motivos de segurança.)fonte
Perl, 18 bytes
Inclui +1 para
-p
Execute com a entrada em STDIN
123.pl
:fonte
PHP, 31 bytes
Verifique se o primeiro dígito de (número menos 12) é múltiplo de 111
fonte
PowerShell v3 +, 24 bytes
Usa o mesmo truque "múltiplo de 111 mais 12" como algumas outras respostas, mas segue na outra direção. Recebe entrada
$args[0]
, subtrai12
, divide por111
e verifica se esse é-in
o intervalo1..7
. Gera um valor booleano verdadeiro / falso. Requer v3 + para o-in
operador.Casos de teste
fonte
Código da máquina ARM, 18 bytes
Despejo hexadecimal (little endian):
Essa é uma função que possui um par de ponteiros de comprimento para a sequência. A saída é no estilo bash, gera 0 para true e um valor diferente de zero para false. Em C, a função seria declarada int oneTwoThree (size_t length, char * string). A codificação da instrução é thumb-2, que possui instruções de 2 e 4 bytes. Testado em um Raspberry Pi 3.
Montagem não destruída:
Script de teste (também montagem):
fonte
JavaScript (ES6), 34 bytes
E mais uma opção em JS. Recebe entrada como uma sequência e gera
0
parafalse
e1
paratrue
.Veja minhas outras soluções aqui e aqui
Tente
fonte