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
?s
tiene que ser una lista de cadenas singleton (o tendría que emitirs
para enumerar para la comparación), ylist.find
no está definido ...s.index
entonces? 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
SIxLQ
parece funcionar.Q
no parece ser analizado correctamente, intercambia el orden de los argumentos o algo así para obtener todo0
sy 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
22321
da 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
0
para entradas válidas y en cualquier lugar entre1
y9
para entradas no válidas (debido a la codicia de la.+
, no podemos obtener más quen-1
coincidencias paran
diferentes dígitos).Para invertir la veracidad del resultado, contamos el número de
0
s, que es1
para entradas válidas y0
para entradas no válidas.fuente
A`(.)(?!\1).+\1
por 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 person
Eso 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, returntrue
y 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 movertevA
dentro del ciclo y eliminarlo]
Y&
dentro, pero eso no funcionó porquefd2<
puede estar vacío. ¡MoversevA
adentro funciona muy bien! También desearía que tuviéramos un establounique
que no ocupara toneladas de bytes.u
de manera predeterminada (siempre puede incluirS
luego 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
:-1
Python,
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 1
C #, 119 bytes
Sin golf
fuente
Julia, 35 bytes
Por alguna razón,
sort
no toma una cuerda, peroissorted
sí ...fuente
issorted
funciona, perosort
no lo hace.sorted
convierte 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
call
esto 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 falsedad1
para casos verdaderos yfalse
para 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);}
!--m
with1/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).(==)<$>l
is shorter version of[map(==a)l|a<-l]
. The function(<$>l).(==)
that takesa
tomap(==a)l
is mapped ontol
.scanl1 min
takes the cumulative smallest elements ofl
, which equals the original only ifl
is 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
sort
function 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
-pe
instead of-e
.fuente
Wolfram Language (Mathematica), 18 bytes
Try it online!
Gather
gathers a list into sublists of identical elements, andSplit
splits 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