Se um número inteiro possui um dígito / sequência de dígitos que se repete continuamente (você entenderá por que eu disse "continuamente") 5 ou mais vezes, chamamos de "chato".
Por exemplo, 11111
é chato, enquanto 12345
não é.
Instruções
Tome um número inteiro como entrada
Emita um valor verdadeiro se o número inteiro for chato e um valor falsey se o número inteiro não for chato.
Exemplo
11111
=> true
ou 1
(1 repete 5 vezes)
12345
=> false
ou0
1112111
=> false
ou0
4242424242
=> true
ou 1
(42 repetições 5 vezes)
-11111
=> true
ou1
3452514263534543543543543543876514264527473275
=> true
ou 1
(543 repetições 5 vezes)
Se você usar outros tipos de "verdade" e "falso", especifique-o.
Regras
Aplicam-se regras básicas de golfe com código .
Boa sorte!
1112111
chato?4242424242
chato?Respostas:
05AB1E , 8 bytes
Código:
Explicação:
Verdade é diferente de zero e falso é zero. Usa a codificação CP-1252 .
Experimente online!
fonte
Œ
com×
.Retina , 9 bytes
Verifique todos os casos de teste! (ligeiramente modificado para executar todos os casos de teste de uma só vez.)
fonte
12345
(.+){5}
expande para(.+)(.+)(.+)(.+)(.+)
enquanto se(.+)\1{4}
expande para(.+)\1\1\1\1
.Java 8, 52 bytes
Superou essa resposta do Java 8 com uma direta
String#matches
.Explicação:
Experimente aqui.
fonte
Java 8,
7366 bytes:Viva o Java 8 lambdas! Retorna
true
se a correspondência for encontrada efalse
caso contrário.Experimente Online! (Ideona)
fonte
Lua, 35 bytes
Bem, não vejo como fazer melhor com os padrões de Lua! Adota um argumento da linha de comando como entrada e saída
nil
para casos de falsidade e o número repetido quando verdade.fonte
JavaScript, 16 bytes
Em node.js (60 bytes)
Desperdiçando uma tonelada de bytes na entrada / saída.
JavaScript ES6 (33 bytes)
Desperdiçando novamente bytes na entrada / saída.
De preferência, como uma função anônima (22 bytes)
Ou ainda mais curto ( 16 bytes )
Obrigado @BusinessCat por apontar meus erros.
fonte
/(.+)\1{4}/.test(n)
vez dematch
salvar alguns bytes. Também não parece que isso realmente produza algo.Uncaught TypeError: Method RegExp.prototype.test called on incompatible receiver undefined
. Não tenho certeza se isso conta tecnicamente como uma resposta correta, não precisa ser algo parecido/./.test.bind(/(.+)\1{4}/)
?Python 3.5,
4943 bytes:( -6 bytes graças às dicas de Martin Ender ! )
Usa uma expressão regular para corresponder a todas as seqüências repetidas de caracteres, desde que sejam repetidas continuamente 5 ou mais vezes. Retorna um
re
objeto de correspondência (como<_sre.SRE_Match object; span=(0, 10), match='4242424242'>
) se uma correspondência for encontrada como um valor deNone
verdade e nada ou como um valor de falsey.Experimente Online! (Ideona)
fonte
{4,}
por{4}
?\1
fazer depois do grupo regex?Perl,
1715 bytes+ a
p
bandeira.(corra com
perl -pe '$_=/(.+)\1{4}/'
)Obrigado a Dom Hasting pelo em
(.+)
vez de(\d+)
.Explicações, se necessário:
(.+)
corresponderá a qualquer parte do número e\1{4}$
pesquisará se ele for repetido 4 vezes consecutivas.fonte
$_=/(\d+)\1{4}/
como111112
é chato, mas isso não vai pegá-lo. Você pode até usar de/./
acordo com a resposta da Retina.C # -
9338 bytesPega uma string, retorna um número inteiro.
Obrigado ao aloisdg por economizar muitos bytes!
fonte
@"(.+)\1{4}"
funcionaria como o regex também? Faz no meu ambiente C # pelo menos.s=>Syst...
s=>new Regex(@"(.+)\1{4}").IsMatch(s);
porque permanecemos no .NET (que é o nosso stdlib) e nunca contamos parausing System.Linq;
ouusing System.Collections.Generic
.Pitão ,
98 bytes1 byte graças a Maltysen.
O valor de verdade é uma matriz não vazia.
O valor de Falsey é
[]
(matriz vazia).Suíte de teste.
fonte
m
comf
e tirando a soma.Mathematica,
464036 bytesFunção. Toma uma string como entrada e saída
True
ouFalse
. Testa cadeias de caracteres contra a expressãoa__~~a__~~a__~~a__~~a__
, que representa a mesma sequência de caracteres repetida 5 vezes. Para referência, a solução mais curta usando uma regex tem 45 bytes:amaldiçoá-lo RegularExpression!
fonte
PHP,
3733 bytesgraças a NoOneIsHere, eu esqueci
<?=
programa para PHP <5.4, imprime
1
para números chatos,0
senãouso:
register_globals=1
nophp.ini
para php-cgiem seguida, chamar
php-cgi <filename> n=<number>;echo""
$n
por$_GET[n]
solução não-regexp,
152147140 bytessubstitui
die(1)
pordie(print 1)
e anexaecho 0;
para imprimirshort_open_tags=1
se desativado$n+1
por,ceil(strlen($n)/5)+1
ou pelo menos por,strlen($n)
para teste ou ele pode repetir para sempre.fonte
<?=preg_match
... está a poucos caracteres mais curtoHaskell, 80 (63 anos)
Seria 63 se não houvesse declaração de importação.
Uso
A propósito, consecutivo faz mais sentido para mim do que continuamente.
(Desculpe, não posso comentar ainda.)
fonte
MATLAB, 26 ou 13 bytes
isso leva uma variável inteira 'i'. Uma string é apenas a última parte:
Eu contei a nova linha como personagem.
fonte
i=input('')
ou faça da coisa toda uma função (por exemplo@(i)...
). BTW, acho que não seria exagero levar o número inteiro como uma string. PS Acho que falha no último caso de teste e também é simples211111
.TSQL, 151 bytes
Golfe:
Ungolfed:
Violino
fonte
PowerShell, 26 bytes
Eu não sou de modo algum um mestre de regex, portanto, agradeço as outras respostas por isso.
fonte
Clojure, 24 bytes
Usa os valores falsey de
nil
/false
e os valores verdadeiros de clojure para todo o resto. Especificamente,nil
quando nenhuma correspondência é encontrada para false e uma matriz[]
para true quando uma correspondência é encontrada como para 11111, então["11111" "1"]
é verdadeira.fonte
JS sem regexes, 166
não minificado:
fonte