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>
Respuestas:
Python 3,
383433 bytesEsto espera una lista de dígitos o cadenas singleton como argumento. Pruébalo en Ideone .
¡Gracias a @xsot por jugar golf 4 bytes!
¡Gracias a @immibis por jugar golf en 1 byte!
fuente
lambda s:s==sorted(s,key=`s`.find)s.find?stiene que ser una lista de cadenas singleton (o tendría que emitirspara enumerar para la comparación), ylist.findno está definido ...s.indexentonces? Parece funcionar para mi.JavaScript (ES6), 27 bytes
Utiliza anticipación negativa para buscar dos dígitos no contiguos. Si existen al menos dos de esos dígitos, entonces se pueden elegir para que el primer dígito preceda a un dígito diferente.
fuente
05AB1E , 4 bytes
Código:
Explicación:
Utiliza la codificación CP-1252 .
Pruébalo en línea!
fuente
Jalea , 5 bytes
Pruébalo en línea!
Cómo funciona
fuente
Pyth,
65 bytes1 bytes gracias a FryAmTheEggman
Inspirado por la solución Python aquí .
Banco de pruebas
Explicación:
fuente
SIxLQparece funcionar.Qno parece ser analizado correctamente, intercambia el orden de los argumentos o algo así para obtener todo0sy siempre da verdad. Aquí hay un conjunto de pruebas.R,
6648464338 bytesEsta es una función que acepta la entrada como un vector de dígitos y devuelve un valor booleano. Para llamarlo, asígnelo a una variable.
No es el más corto, pero pensé que era un enfoque divertido. Corremos longitud codificar la entrada y extraer los valores. Si la lista de valores contiene duplicados, devuelva
FALSE, de lo contrario, devuelvaTRUE.Verifique todos los casos de prueba en línea
¡Ahorré 20 bytes gracias a MickyT, 3 gracias a Albert Masclans y 5 gracias a mnel!
fuente
MATL , 8 bytes
La salida es una matriz que contiene solo unos para la verdad, o una matriz que contiene al menos un cero para falsey.
Pruébalo en línea!
Explicación
Considere la entrada
22331, que satisface la condición. La prueba de si cada personaje es igual entre sí da la matriz 2DEl resultado final debe ser verdadero si las filas de esa matriz (consideradas como atómicas) están en orden decreciente (lexicográfico) . A modo de comparación, la entrada
22321da la matrizen el que las filas no están ordenadas.
fuente
Retina , 17 bytes
Pruébalo en línea! (Ligeramente modificado para ejecutar todos los casos de prueba a la vez).
La primera expresión regular coincide con los dígitos que están separados por otros dígitos, por lo que obtenemos una
0para entradas válidas y en cualquier lugar entre1y9para entradas no válidas (debido a la codicia de la.+, no podemos obtener más quen-1coincidencias parandiferentes dígitos).Para invertir la veracidad del resultado, contamos el número de
0s, que es1para entradas válidas y0para entradas no válidas.fuente
A`(.)(?!\1).+\1por 15 bytes. También funciona para múltiples entradas. La verdad es la entrada, la falsedad no es nada. Uno no simplemente supera a Martin en su propio idioma. :)Java,
161156bytesPorque Java ...
Sin vergüenza
robandoprestada la expresión regular de esta respuesta porque empecé a cabo tratando de hacer esto con los arreglos y la manipulación de las matemáticas, pero se puso terriblemente compleja, y expresiones regulares es tan buena como cualquier herramienta para este problema.Sin golf:
Presentado como una persona sensible de Java:
fuente
like a sensible Java personEso sería, no usar Java nunca.s->s.match("(.)(?!\\1).*\\1")Pyth, 7 bytes
Test Suite .
fuente
Ruby, 23 bytes
Función anónima. Acepta una cadena. Regex strat.
Desglose de expresiones regulares
!~significa que si no hay coincidencias de la expresión regular dentro de la cadena, returntruey returnfalse.fuente
Mathematica, 26 bytes
fuente
MATL,
1311 bytes¡Gracias a Luis Mendo por guardar dos bytes!
Pruébalo en línea!
Explicación
fuente
j. Además, creo que puedes movertevAdentro del ciclo y eliminarlo]Y&dentro, pero eso no funcionó porquefd2<puede estar vacío. ¡MoversevAadentro funciona muy bien! También desearía que tuviéramos un establouniqueque no ocupara toneladas de bytes.ude manera predeterminada (siempre puede incluirSluego dos bytes). ¿Qué piensas?Haskell, 44 bytes
Ejemplo de uso:
((==)<*>nub).map head.group $ "44999911"->True.Una versión sin puntos:
fuente
J, 8 bytes
Pruébalo con J.js .
Cómo funciona
fuente
:]:i:-1Python,
5655 bytesfuente
int not subscriptable)~(que literalmente es equivalente a1-):a=lambda s:~(s[0]in s.lstrip(s[0]))&a(s[1:])if s else 1C #, 119 bytes
Sin golf
fuente
Julia, 35 bytes
Por alguna razón,
sortno toma una cuerda, peroissortedsí ...fuente
issortedfunciona, perosortno lo hace.sortedconvierte su argumento iterable en una lista mutable primero, es por eso quesorted(string)devuelve una lista de cadenasFactor, 22 bytes
Hace lo que dice en la lata. Como una función anónima, debe hacer
callesto o convertirlo en a: word ;.fuente
Lua,
1079485 Bytes13 bytes guardados gracias a @LeakyNun
Al menos, supera a Java: D. Lua apesta manipulando cadenas, pero creo que es lo suficientemente bueno :).
Toma su entrada como un argumento de línea de comandos,
y da salidaAhora sale usando su código de salida. Código de salida 0 para verdad, y 1 para falsedad1para casos verdaderos yfalsepara casos falsos.Sin golf
Tenga cuidado, hay dos variables mágicas llamadas
..., la primera contiene el argumento del programa, la segunda es local para la función anónima y contiene sus parámetrosfuente
os.exit()coni=#0...JavaScript ES6,
7169 bytesO equivalente:
Golf en progreso.
Verificar casos de prueba
fuente
C # 111 bytes
estrategia anterior 131 bytes
primer golf, creo que hice bien en
fuente
C,
747371 bytes¡Afeitado
unbyte tres gracias a @xsot!fuente
a[99]I love Perl's autovivification! Oh, wait...a[99],c,m;main(d){for(;~c;m|=a[d=c]+=c!=d)c=getchar();putchar(48+1/m);}!--mwith1/m. Abouta[d=c]+=c!=d, I tried it with gcc and it didn't work on my computer because of order of evaluation. We must find a compiler that will play along.a[99],c,m;main(d){for(;~c;m|=c^d&&a[d=c]++)c=getchar();putchar(48+!m);}Haskell, 37 bytes
Uses the same approach as Luis Mendo's MATL answer: creates a vector for each entry which indices equal it, and checks that the result is sorted in decreasing order.
(<$>l).(==)<$>lis shorter version of[map(==a)l|a<-l]. The function(<$>l).(==)that takesatomap(==a)lis mapped ontol.scanl1 mintakes the cumulative smallest elements ofl, which equals the original only iflis reverse-sorted.(==)=<<checks if the list is indeed invariant under this operation.A different recursive strategy gave 40 bytes:
This checks each suffix to see if its first element doesn't appear in the remainder, excusing cases where the first two elements are equal as part of a contiguous block.
fuente
Racket, 53 bytes
The dumb, simple version.
Ungolfed:
Racket, 86 bytes
Here's the version implementing @xnor's comment about more efficient ways to do this.
Ungolfed:
Okay, this may actually just shift the weight of computation from the
sortfunction toregexp-replace, but it was an interesting solution. Basically, it removes runs of duplicate characters first (see here), then tests if the remaining length-1 runs are in sorted fashion.fuente
Perl 5, 20 bytes
19, plus 1 for
-peinstead of-e.fuente
Wolfram Language (Mathematica), 18 bytes
Try it online!
Gathergathers a list into sublists of identical elements, andSplitsplits a list into sublists of consecutive identical elements. They give the same result if and only if each value appears in only one contiguous block.fuente
Convex, 17 bytes
Try it online!
fuente
Japt, 9 bytes
Try it
Explanation
fuente
APL (Dyalog), 17 bytes
Try it online!
fuente