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>
Odpowiedzi:
Python 3,
383433 bajtówTo oczekuje listy cyfr lub ciągów singletonów jako argumentu. Przetestuj na Ideone .
Dzięki @xsot za grę w golfa z 4 bajtów!
Dzięki @immibis za grę w golfa na 1 bajcie!
źródło
lambda s:s==sorted(s,key=`s`.find)
s.find
?s
musi być listą ciągów singletonowych (lub musiałbym przerzucićs
na listę w celu porównania) ilist.find
nie jest zdefiniowany ...s.index
? Wydaje się dla mnie pracować.JavaScript (ES6), 27 bajtów
Używa negatywnego spojrzenia przed siebie, aby wyszukać dwie niesąsiadujące cyfry. Jeśli istnieją co najmniej dwie takie cyfry, można je wybrać tak, aby pierwsza cyfra poprzedza inną cyfrę.
źródło
05AB1E , 4 bajty
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 .
Wypróbuj online!
źródło
Galaretka , 5 bajtów
Wypróbuj online!
Jak to działa
źródło
Pyth,
65 bajtów1 bajt dzięki FryAmTheEggman
Zainspirowany tutaj rozwiązaniem Python .
Zestaw testowy
Wyjaśnienie:
źródło
SIxLQ
wydaje się działać.Q
nie wydaje się poprawnie przeanalizowany, zamienia kolejność argumentów lub coś, więc dostajesz wszystkie0
s i zawsze daje to prawdę. Oto pakiet testowy.R,
6648464338 bajtówJest to funkcja, która przyjmuje dane wejściowe jako wektor cyfr i zwraca wartość logiczną. Aby go wywołać, przypisz go do zmiennej.
Nie najkrótszy, ale pomyślałem, że to zabawne podejście. Uruchamiamy kodowanie długości danych wejściowych i wyodrębnianie wartości. Jeśli lista wartości zawiera duplikaty, zwróć
FALSE
, w przeciwnym razie zwróćTRUE
.Sprawdź wszystkie przypadki testowe online
Zaoszczędź 20 bajtów dzięki MickyT, 3 dzięki Albertowi Masclansowi i 5 dzięki mnel!
źródło
MATL , 8 bajtów
Dane wyjściowe to tablica zawierająca tylko jedne dla prawdy lub tablica zawierająca co najmniej jedno zero dla falsey.
Wypróbuj online!
Wyjaśnienie
Rozważ dane wejściowe
22331
, które spełniają warunek. Testowanie, czy każdy znak jest równy, daje tablicę 2DOstateczny wynik powinien być prawdziwy, jeśli rzędy tej tablicy (uważane za atomowe) są w porządku (leksykograficznym) malejącym . Dla porównania dane wejściowe
22321
dają tablicęw których wiersze nie są sortowane.
źródło
Siatkówka , 17 bajtów
Wypróbuj online! (Nieznacznie zmodyfikowany, aby uruchomić wszystkie przypadki testowe jednocześnie).
Pierwszy regex pasuje do cyfr, które są oddzielone od pozostałych cyfr, więc dostać
0
do prawidłowych wejść i nigdzie pomiędzy1
i9
za nieprawidłowe wejść (z powodu chciwości z The.+
, nie możemy dostać więcej niżn-1
mecze dlan
różnych cyfr).Aby odwrócić prawdziwość wyniku, zliczamy liczbę
0
s, która jest1
dla poprawnych danych wejściowych i0
nieprawidłowych .źródło
A`(.)(?!\1).+\1
dla 15 bajtów. Działa również dla wielu wejść. Prawda jest wkładem, fałsz jest niczym. Nie gra się po prostu w Martina w jego własnym języku. :)Java,
161156 bajtówPonieważ Java ...
Bezwstydnie
kradniezapożyczanie wyrażenia regularnego z tej odpowiedzi ponieważ zacząłem próbować robić to za pomocą tablic i manipulacji matematycznych, ale stało się to strasznie skomplikowane, a wyrażenie regularne jest tak samo dobrym narzędziem jak ten problem.Nie golfowany:
Przedstawiony jak rozsądna osoba Java:
źródło
like a sensible Java person
To znaczy, że nigdy nie używam Javy.s->s.match("(.)(?!\\1).*\\1")
Pyth, 7 bajtów
Pakiet testowy .
źródło
Rubinowy, 23 bajty
Funkcja anonimowa. Akceptuje ciąg. Strate Regex.
Podział Regex
!~
oznacza, jeśli w ciągu nie ma żadnych dopasowań wyrażenia regularnego, returntrue
i return returnfalse
.źródło
Mathematica, 26 bajtów
źródło
MATL,
1311 bajtówDzięki Luis Mendo za uratowanie dwóch bajtów!
Wypróbuj online!
Wyjaśnienie
źródło
j
. Myślę też, że możesz poruszać sięvA
w pętli i usuwać]
Y&
środka, ale to nie działało, ponieważfd2<
może być puste.vA
Jednak poruszanie się w środku działa świetnie! Naprawdę chciałbym mieć stajnię,unique
która nie zajmowałaby ton bajtów.u
ustabilizuj domyślnie (zawsze możesz dołączyćS
później dwa bajty). Co myślisz?Haskell, 44 bajty
Przykład użycia:
((==)<*>nub).map head.group $ "44999911"
->True
.Wersja bez point-point:
źródło
J, 8 bajtów
Przetestuj to z J.JS .
Jak to działa
źródło
:]
:i
:-1
Python,
5655 bajtówźródło
int not subscriptable
)~
(który dosłownie jest równoważny1-
):a=lambda s:~(s[0]in s.lstrip(s[0]))&a(s[1:])if s else 1
C #, 119 bajtów
Bez golfa
źródło
Julia, 35 bajtów
Z jakiegokolwiek powodu
sort
nie bierze sznurka, aleissorted
...źródło
issorted
działa, alesort
nie działa.sorted
najpierw przekształca swój iterowalny argument w listę zmienną - dlategosorted(string)
zwraca listę ciągówWspółczynnik, 22 bajty
Robi to, co jest napisane na puszce. Jako funkcję anonimową powinieneś
call
to zrobić lub zrobić to: word ;
.źródło
Lua,
1079485 bajtów13 bajtów zapisanych dzięki @LeakyNun
Przynajmniej bije Java: D. Lua ssie manipulowanie ciągami, ale myślę, że to wystarczy :).
Bierze swoje dane wejściowe jako argument wiersza poleceń,
a dane wyjścioweTeraz wyświetla dane wyjściowe za pomocą kodu wyjścia. Wyjdź z kodu 0 dla prawdy i 1 dla fałszu1
dla prawdziwych przypadków ifalse
dla fałszywych.Bez golfa
Uwaga, wywoływane są dwie magiczne zmienne
...
, pierwsza zawiera argument programu, druga jest lokalna dla funkcji anonimowej i zawiera jej parametryźródło
os.exit()
zi=#0
...JavaScript ES6,
7169 bajtówLub równoważnie:
Gra w golfa w toku.
Sprawdź przypadki testowe
źródło
C # 111 bajtów
stara strategia 131 bajtów
pierwszy golf myślę, że zrobiłem dobrze w
źródło
C,
747371 bajtówOgolony
jedentrzech bajtów dzięki @xsot!źródło
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.
źródło
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.źródło
Perl 5, 20 bytes
19, plus 1 for
-pe
instead of-e
.źródło
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.źródło
Convex, 17 bytes
Try it online!
źródło
Japt, 9 bytes
Try it
Explanation
źródło
APL (Dyalog), 17 bytes
Try it online!
źródło