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>
Antworten:
Python 3,
383433 BytesDies erwartet eine Liste von Ziffern oder Singleton-Strings als Argument. Teste es auf Ideone .
Vielen Dank an @xsot für das Golfen mit 4 Bytes!
Vielen Dank an @immibis für das Golfen ab 1 Byte!
quelle
lambda s:s==sorted(s,key=`s`.find)
s.find
?s
muss eine Liste von Singleton-Strings sein (oder ich muss sies
für den Vergleich auflisten ) undlist.find
ist nicht definiert ...s.index
dann? Scheint für mich zu arbeiten.JavaScript (ES6), 27 Byte
Verwendet den negativen Lookahead, um nach zwei nicht zusammenhängenden Ziffern zu suchen. Wenn mindestens zwei solcher Ziffern vorhanden sind, können sie so gewählt werden, dass die erste Ziffer einer anderen Ziffer vorangeht.
quelle
05AB1E , 4 Bytes
Code:
Erläuterung:
Verwendet CP-1252- Codierung.
Probieren Sie es online!
quelle
Gelee , 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Pyth,
65 Bytes1 Byte dank FryAmTheEggman
Inspiriert von der Python-Lösung hier .
Testsuite
Erläuterung:
quelle
SIxLQ
scheint zu funktionieren.Q
scheint nicht richtig analysiert zu werden, sie tauscht die Argumentreihenfolge oder so etwas aus, sodass Sie alle0
s erhalten und es immer wahr ist. Hier ist eine Testsuite.R
6648464338 BytesDies ist eine Funktion, die die Eingabe als Vektor von Ziffern akzeptiert und einen Booleschen Wert zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Nicht die kürzeste, aber ich dachte, es wäre ein lustiger Ansatz. Wir führen eine Längencodierung der Eingabe durch und extrahieren die Werte. Wenn die Werteliste Duplikate enthält, kehren Sie zurück
FALSE
, andernfalls zurückTRUE
.Überprüfen Sie alle Testfälle online
Dank MickyT 20 Bytes gespart, dank Albert Masclans 3 und dank mnel 5!
quelle
MATL , 8 Bytes
Die Ausgabe ist ein Array, das nur Einsen für die Wahrheit enthält, oder ein Array, das mindestens eine Null für die Falschheit enthält.
Probieren Sie es online!
Erläuterung
Betrachten Sie die Eingabe
22331
, die die Bedingung erfüllt. Das Testen, ob jedes Zeichen gleich ist, ergibt das 2D-ArrayDas Endergebnis sollte wahr sein, wenn die Zeilen dieses Arrays (als atomar betrachtet) in absteigender (lexikografischer) Reihenfolge vorliegen . Zum Vergleich
22321
liefert die Eingabe das Arrayin denen die Zeilen nicht sortiert sind.
quelle
Retina , 17 Bytes
Probieren Sie es online! (Leicht modifiziert, um alle Testfälle gleichzeitig auszuführen.)
Die ersten Regex -Übereinstimmungen Ziffern , die sich von anderen Stellen getrennt, so dass wir eine bekommen
0
für gültige Eingaben und irgendwo zwischen1
und9
für ungültige Eingaben (aufgrund der Gefräßigkeit der das.+
können wir nicht mehr als bekommenn-1
Treffer fürn
verschiedene Stellen).Um die Richtigkeit des Ergebnisses umzukehren, wird die Anzahl von
0
s gezählt, die1
für gültige Eingaben und0
für ungültige Eingaben gilt .quelle
A`(.)(?!\1).+\1
für 15 Bytes. Funktioniert auch für mehrere Eingänge. Wahrheit ist die Eingabe, falsch ist nichts. Man spielt Martin nicht einfach in seiner eigenen Sprache aus. :)Java,
161156 BytesWeil Java ...
Schamlos zu
stehlen, den Regex aus dieser Antwort auszuleihen, weil ich zu Beginn versucht habe, dies mit Arrays und mathematischen Manipulationen zu tun, aber es wurde schrecklich komplex, und Regex ist für dieses Problem ein ebenso gutes Werkzeug wie jedes andere.Ungolfed:
Ausgelegt wie eine vernünftige Java-Person:
quelle
like a sensible Java person
Das wäre, niemals Java zu benutzen.s->s.match("(.)(?!\\1).*\\1")
Pyth, 7 Bytes
Test Suite .
quelle
Ruby, 23 Bytes
Anonyme Funktion. Akzeptiert eine Zeichenfolge. Regex Strat.
Regex-Panne
!~
bedeutet, wenn die Zeichenfolge keine Übereinstimmungen mit dem regulären Ausdruck enthält, returntrue
und andernfalls returnfalse
.quelle
Mathematica, 26 Bytes
quelle
MATL,
1311 BytesDanke an Luis Mendo für das Speichern von zwei Bytes!
Probieren Sie es online!
Erläuterung
quelle
j
. Außerdem denke ich, dass Sie sichvA
innerhalb der Schleife bewegen und entfernen können]
Y&
herumgespielt, aber das hat nicht funktioniert, weilfd2<
es leer sein kann. Das Bewegen vonvA
innen funktioniert aber großartig! Außerdem wünschte ich mir wirklich, wir hätten einen Stallunique
, der nicht Tonnen von Bytes aufnimmt.u
Sie einfach standardmäßig stabil (Sie könnten danach immerS
zwei Bytes einschließen ). Was denkst du?Haskell, 44 Bytes
Anwendungsbeispiel:
((==)<*>nub).map head.group $ "44999911"
->True
.Eine nicht pointfree Version:
quelle
J, 8 Bytes
Testen Sie es mit J.js .
Wie es funktioniert
quelle
:]
:i
:-1
Python,
56-55Bytesquelle
int not subscriptable
)~
(was wörtlich gleichbedeutend ist mit1-
):a=lambda s:~(s[0]in s.lstrip(s[0]))&a(s[1:])if s else 1
C #, 119 Bytes
Ungolfed
quelle
Julia, 35 Bytes
Aus welchem Grund auch immer,
sort
nimmt keine Zeichenfolge,issorted
tut aber ...quelle
issorted
, warum es funktioniert, abersort
nicht.sorted
Argument zuerst in eine veränderbare Liste umgewandelt wird. Aus diesem Grund wirdsorted(string)
eine Liste mit Zeichenfolgen zurückgegebenFaktor 22 Bytes
Tut was es verspricht. Als anonyme Funktion sollten Sie
call
dies tun oder es zu einer machen: word ;
.quelle
Lua,
1079485 BytesDank @LeakyNun 13 Bytes gespart
Zumindest schlägt es Java: D. Lua hat Spaß daran, Saiten zu manipulieren, aber ich denke, es ist gut genug :).
Es nimmt seine Eingabe als Befehlszeilenargument
und gibt sieJetzt wird mit seinem Exit-Code ausgegeben. Beenden Sie den Code 0 für "Wahr" und 1 für "Falsch"1
für wahrheitsgemäße undfalse
für falsch aus.Ungolfed
Seien Sie vorsichtig, es gibt zwei Magic-Variablen
...
, die aufgerufen werden. Die erste enthält das Argument des Programms, die zweite ist lokal für die anonyme Funktion und enthält ihre Parameterquelle
os.exit()
miti=#0
...JavaScript ES6,
7169 BytesOder äquivalent:
Golfen im Gange.
Überprüfen Sie die Testfälle
quelle
C # 111 Bytes
alte Strategie 131 Bytes
Ich glaube, ich habe das erste Mal gut gespielt
quelle
C
74,7371 BytesRasiert
einDrei-Byte dank @xsot!quelle
a[99]
Ich liebe Perls Autovivifizierung! Oh, warte ...a[99],c,m;main(d){for(;~c;m|=a[d=c]+=c!=d)c=getchar();putchar(48+1/m);}
!--m
mit1/m
. Übera[d=c]+=c!=d
habe ich versucht , es mit gcc und es nicht wegen der Reihenfolge der Auswertung auf meinem Computer nicht funktioniert. Wir müssen einen Compiler finden, der mitspielt.a[99],c,m;main(d){for(;~c;m|=c^d&&a[d=c]++)c=getchar();putchar(48+!m);}
Haskell, 37 Bytes
Verwendet den gleichen Ansatz wie die MATL-Antwort von Luis Mendo : für jeden Eintrag einen Vektor, dessen Indizes diesem entsprechen, und überprüft, ob das Ergebnis in absteigender Reihenfolge sortiert ist.
(<$>l).(==)<$>l
ist eine kürzere Version von[map(==a)l|a<-l]
. Die Funktion ,(<$>l).(==)
die nimmta
zumap(==a)l
wird gemapptl
.scanl1 min
Nimmt die kumulativ kleinsten Elemente von aufl
, was dem Original nur entspricht, wennl
es rücksortiert ist.(==)=<<
prüft, ob die Liste bei dieser Operation tatsächlich unveränderlich ist.Eine andere rekursive Strategie ergab 40 Bytes:
Dadurch wird jedes Suffix überprüft, um festzustellen, ob sein erstes Element im Rest nicht erscheint. Dies entschuldigt Fälle, in denen die ersten beiden Elemente als Teil eines zusammenhängenden Blocks gleich sind.
quelle
Schläger, 53 Bytes
Die dumme, einfache Version.
Ungolfed:
Schläger, 86 Bytes
Hier ist die Version, die den Kommentar von @ xnor zu effizienteren Methoden implementiert .
Ungolfed:
Okay, dies kann das Gewicht der Berechnung tatsächlich von der
sort
Funktion auf verschiebenregexp-replace
, aber es war eine interessante Lösung. Im Grunde ist es entfernt Läufe von doppelten Zeichen zuerst ( siehe hier ), prüft dann , ob die verbleibende Länge-1 läuft in sortierter Art und Weise ist.quelle
Perl 5, 20 Bytes
19, plus 1 für
-pe
statt-e
.quelle
Wolfram Language (Mathematica) , 18 Byte
Probieren Sie es online!
Gather
sammelt eine Liste in Unterlisten identischer Elemente undSplit
teilt sie in Unterlisten aufeinanderfolgender identischer Elemente auf. Sie liefern genau dann das gleiche Ergebnis, wenn jeder Wert nur in einem zusammenhängenden Block vorkommt.quelle
Konvex, 17 Bytes
Probieren Sie es online!
quelle
Japt , 9 Bytes
Versuch es
Erläuterung
quelle
APL (Dyalog) , 17 Bytes
Probieren Sie es online!
quelle