var QUESTION_ID=77608,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/77608/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Respostas:
Python 3,
383433 bytesIsso espera uma lista de dígitos ou seqüências de caracteres singleton como argumento. Teste em Ideone .
Graças a @xsot por jogar fora 4 bytes!
Obrigado a @immibis por jogar fora um byte!
fonte
lambda s:s==sorted(s,key=`s`.find)
s.find
?s
deve ser uma lista de strings singleton (ou eu teria que transmitirs
para listar para comparação) elist.find
não está definido ...s.index
então? Parece funcionar para mim.JavaScript (ES6), 27 bytes
Usa lookahead negativo para procurar por dois dígitos não contíguos. Se pelo menos dois desses dígitos existirem, eles poderão ser escolhidos para que o primeiro dígito anteceda um dígito diferente.
fonte
05AB1E , 4 bytes
Código:
Explicação:
Usos a codificação CP-1252 .
Experimente online!
fonte
Gelatina , 5 bytes
Experimente online!
Como funciona
fonte
Pitão,
65 bytes1 bytes graças a FryAmTheEggman
Inspirado pela solução Python aqui .
Suíte de teste
Explicação:
fonte
SIxLQ
parece funcionar.Q
não parece ser analisado corretamente, troca a ordem dos argumentos ou algo assim, assim você obtém todos os0
se sempre é verdadeiro. Aqui está uma suíte de testes.R,
6648464338 bytesEsta é uma função que aceita a entrada como um vetor de dígitos e retorna um booleano. Para chamá-lo, atribua-o a uma variável.
Não é o mais curto, mas achei que era uma abordagem divertida. Executamos o comprimento codificar a entrada e extrair os valores. Se a lista de valores contiver duplicatas, retorne
FALSE
; caso contrário, retorneTRUE
.Verifique todos os casos de teste online
Economizou 20 bytes graças a MickyT, 3 graças a Albert Masclans e 5 graças a mnel!
fonte
MATL , 8 bytes
A saída é uma matriz que contém apenas unidades para verdade ou uma matriz que contém pelo menos um zero para falsey.
Experimente online!
Explicação
Considere a entrada
22331
, que satisfaz a condição. Testar se cada caractere é igual ao outro fornece a matriz 2DO resultado final deve ser verdadeiro se as linhas dessa matriz (consideradas atômicas) estiverem em ordem decrescente (lexicográfica) . Para comparação, a entrada
22321
fornece a matrizem que as linhas não são classificadas.
fonte
Retina , 17 bytes
Experimente online!(Ligeiramente modificado para executar todos os casos de teste de uma vez.)
O primeiro regex corresponde a dígitos que são separados por outros dígitos, então obtemos um
0
para entradas válidas e em qualquer lugar entre1
e9
para entradas inválidas (devido à ganância do the.+
, não podemos obter mais quen-1
correspondências paran
dígitos diferentes).Para inverter a veracidade do resultado, contamos o número de
0
s, que é1
para entradas válidas e0
para entradas inválidas.fonte
A`(.)(?!\1).+\1
por 15 bytes. Também funciona para várias entradas. Verdade é a entrada, falsidade não é nada. Não se pode simplesmente jogar golfe em Martin em seu próprio idioma. :)Java,
161156 bytesPorque Java ...
Descaradamente
roubarpedindo o regex de esta resposta , porque eu comecei a tentar fazer isso com matrizes e manipulação matemática, mas ficou terrivelmente complexa, e regex é tão bom uma ferramenta como qualquer para este problema.Ungolfed:
Estabelecido como uma pessoa sensata em Java:
fonte
like a sensible Java person
Isso seria, nunca usando Java.s->s.match("(.)(?!\\1).*\\1")
Pitão, 7 bytes
Conjunto de Teste .
fonte
Ruby, 23 bytes
Função anônima. Aceita uma string. Regex strat.
Repartição de Regex
!~
significa que, se não houver correspondências da expressão regular na cadeia, retornetrue
e retornefalse
.fonte
Mathematica, 26 bytes
fonte
MATL,
1311 bytesObrigado a Luis Mendo por salvar dois bytes!
Experimente Online!
Explicação
fonte
j
. Além disso, eu acho que você pode mover-sevA
dentro do circuito e remova]
Y&
dentro, mas isso não funcionou porquefd2<
pode estar vazio. Mover-se paravA
dentro funciona muito bem! Também gostaria que tivéssemos um estábulounique
que não ocupasse toneladas de bytes.u
estável por padrão (você sempre pode incluirS
depois, dois bytes). O que você acha?Haskell, 44 bytes
Exemplo de uso:
((==)<*>nub).map head.group $ "44999911"
->True
.Uma versão sem ponto:
fonte
J, 8 bytes
Testá-lo com J.js .
Como funciona
fonte
:]
:i
:-1
Python,
5655 bytesfonte
int not subscriptable
)~
(literalmente, que é equivalente a1-
):a=lambda s:~(s[0]in s.lstrip(s[0]))&a(s[1:])if s else 1
C #, 119 bytes
Ungolfed
fonte
Julia, 35 bytes
Por qualquer motivo,
sort
não pega uma string, masissorted
...fonte
issorted
funciona, massort
não funciona.sorted
transforma seu argumento iterable em uma lista mutável primeira - é por isso quesorted(string)
retorna uma lista de stringsFator, 22 bytes
Faz o que diz na lata. Como função anônima, você deve
call
fazer isso ou torná-lo um: word ;
.fonte
Lua,
1079485 bytes13 bytes salvos graças a @LeakyNun
Pelo menos, ele vence o Java: D. Lua é péssima em manipular strings, mas acho que é bom o suficiente :).
Ele recebe sua entrada como argumento da linha de comando
e produzAgora sai usando seu código de saída. Código de saída 0 para verdade e 1 para falsidade1
para casosfalse
verdadeiros e para casos falsos.Ungolfed
Cuidado, existem duas variáveis mágicas chamadas
...
, a primeira contém o argumento do programa, a segunda é local para a função anônima e contém seus parâmetrosfonte
os.exit()
comi=#0
...JavaScript ES6,
7169 bytesOu equivalente:
Golfe em andamento.
Verificar casos de teste
fonte
Bytes em C # 111
estratégia antiga 131 bytes
primeiro golfe eu acho que fiz ok em
fonte
C,
747371 bytesRaspada
umade três bytes, graças ao @xsot!fonte
a[99]
Eu amo a autovivificação do Perl! Oh, espera ...a[99],c,m;main(d){for(;~c;m|=a[d=c]+=c!=d)c=getchar();putchar(48+1/m);}
!--m
por1/m
. Sobrea[d=c]+=c!=d
, tentei com o gcc e não funcionou no meu computador por causa da ordem da avaliação. Precisamos encontrar um compilador que funcione junto.a[99],c,m;main(d){for(;~c;m|=c^d&&a[d=c]++)c=getchar();putchar(48+!m);}
Haskell, 37 bytes
Usa a mesma abordagem da resposta MATL de Luis Mendo : cria um vetor para cada entrada com índices iguais a ele e verifica se o resultado é classificado em ordem decrescente.
(<$>l).(==)<$>l
é a versão mais curta do[map(==a)l|a<-l]
. A função(<$>l).(==)
que levaa
paramap(==a)l
é mapeada paral
.scanl1 min
pega os menores elementos cumulativos del
, que sól
é igual ao original se tiver classificação inversa.(==)=<<
verifica se a lista é realmente invariável nesta operação.Uma estratégia recursiva diferente forneceu 40 bytes:
Isso verifica cada sufixo para ver se o primeiro elemento não aparece no restante, desculpando os casos em que os dois primeiros elementos são iguais como parte de um bloco contíguo.
fonte
Raquete, 53 bytes
A versão simples e burra.
Ungolfed:
Raquete, 86 bytes
Aqui está a versão que implementa o comentário do @ xnor sobre maneiras mais eficientes de fazer isso.
Ungolfed:
Tudo bem, isso pode apenas mudar o peso da computação da
sort
função pararegexp-replace
, mas foi uma solução interessante. Basicamente, ele remove as execuções de caracteres duplicados primeiro ( veja aqui ) e testa se as execuções de comprimento 1 restantes estão ordenadas.fonte
Perl 5, 20 bytes
19, mais 1 para em
-pe
vez de-e
.fonte
Wolfram Language (Mathematica) , 18 bytes
Experimente online!
Gather
reúne uma lista em sublistas de elementos idênticos eSplit
divide uma lista em sublistas de elementos idênticos consecutivos. Eles fornecem o mesmo resultado se e somente se cada valor aparecer em apenas um bloco contíguo.fonte
Convexo, 17 bytes
Experimente online!
fonte
Japonês , 9 bytes
Tente
Explicação
fonte
APL (Dyalog) , 17 bytes
Experimente online!
fonte