W grze Yahtzee gracze rzucają pięcioma sześciokątnymi kostkami i próbują stworzyć określone ręce, aby zdobyć punkty. Jedna taka ręka to mała prosta : cztery kolejne liczby, niekoniecznie w kolejności. Trzy możliwe są niewielkie prostych 1, 2, 3, 4
, 2, 3, 4, 5
oraz 3, 4, 5, 6
.
Na przykład [3, 5, 6, 1, 4]
zawiera małą prostą [3, 4, 5, 6]
.
Wkład
Nieposortowana lista pięciu liczb całkowitych, każda od 1 do 6 włącznie, reprezentujących rękę Yahtzee.
Wydajność
Prawdziwa wartość, jeśli ręka zawiera małą strit, a w przeciwnym razie wartość falsy.
Przypadki testowe
Prawda:
[[1, 2, 3, 3, 4], [1, 2, 3, 4, 5], [3, 5, 6, 1, 4], [1, 5, 3, 4, 6], [4, 5, 2, 3, 5], [1, 4, 3, 2, 2], [5, 4, 3, 6, 3], [5, 3, 5, 4, 6], [2, 4, 5, 1, 3], [3, 6, 4, 5, 3], [5, 6, 4, 3, 5], [4, 5, 3, 6, 3], [4, 5, 5, 3, 2], [4, 5, 2, 3, 5], [4, 6, 5, 3, 6], [4, 2, 3, 1, 5], [3, 6, 4, 6, 5], [5, 2, 1, 3, 4], [4, 4, 1, 2, 3], [4, 1, 4, 2, 3], [5, 1, 4, 3, 6], [5, 2, 2, 3, 4], [4, 4, 6, 5, 3], [2, 4, 3, 5, 1], [5, 4, 2, 5, 3], [2, 3, 5, 5, 4], [1, 6, 3, 4, 5], [4, 5, 3, 3, 6], [6, 4, 3, 6, 5], [4, 6, 6, 5, 3], [4, 3, 5, 2, 2], [2, 3, 2, 1, 4], [4, 2, 6, 1, 3], [4, 4, 5, 3, 6], [4, 5, 6, 3, 6]]
Falsy:
[[1, 2, 3, 5, 6], [5, 1, 1, 6, 6], [4, 6, 4, 1, 1], [6, 4, 1, 6, 4], [4, 6, 3, 6, 6], [2, 1, 4, 6, 4], [2, 6, 1, 5, 6], [2, 6, 1, 5, 6], [3, 6, 5, 3, 2], [3, 2, 3, 5, 3], [5, 5, 6, 2, 3], [3, 4, 6, 4, 3], [1, 4, 5, 5, 1], [1, 4, 4, 4, 1], [1, 6, 5, 1, 4], [6, 6, 4, 5, 4], [5, 3, 3, 3, 2], [5, 2, 1, 5, 3], [3, 5, 1, 6, 2], [6, 4, 2, 1, 2], [1, 3, 1, 3, 2], [3, 1, 3, 4, 3], [4, 3, 1, 6, 3], [4, 6, 3, 3, 6], [3, 6, 3, 6, 4], [1, 1, 3, 1, 3], [5, 5, 1, 3, 2], [3, 4, 2, 6, 6], [5, 4, 2, 6, 1], [2, 4, 4, 5, 4], [3, 6, 2, 5, 5], [2, 5, 3, 5, 1], [3, 2, 2, 3, 4], [5, 2, 2, 6, 2], [5, 6, 2, 5, 6]]
Zainspirowany tym
Katalog
var QUESTION_ID=74997;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=30525;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"http://api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang.toLowerCase(),user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw>b.lang_raw)return 1;if(a.lang_raw<b.lang_raw)return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:290px;float:left}#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="language-list"> <h2>Shortest Solution 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> <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> <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>
code-golf
number
array-manipulation
game
decision-problem
lirtosiast
źródło
źródło
[1,2,3,3,4]
. Wiele odpowiedzi umiera z tego powodu.Odpowiedzi:
MATL ,
71211986 bajtówBardzo dziękuję @lirtosiast za usunięcie 2 bajtów
Truthy to tablica niezerowych wartości. Falsy jest pustą tablicą (brak wyświetlania danych wyjściowych).
Od wersji 16.2.0
u
jest domyślnie stabilny. Zatem kod wymaga dodatkowegoS
sortowania danych wyjściowych:uSd7BXf
( 7 bajtów ). Link zawiera tę modyfikację.Wypróbuj online!
źródło
Python, 44 bajty
Powrót po 9 miesiącach z poprawą. Nie musimy sprawdzać, czy
i
jest w zestawie, z pomysłem Zgarba, by sprawdzać tylko wartości początkowe w zestawie. Możemy teraz używać również w<
przypadku ścisłych podzbiorów, ponieważi
należy je również uwzględnić.47 bajtów:
Sprawdza, czy rzuty kostką są początkiem małego prostego zestawu. Dzięki Zgarbowi za pomysł sprawdzania tylko wartości początkowych na liście, oszczędzając 5 bajtów.
Python 3.5 ma krótszą konwersję zestawu, dla 45 bajtów
To ta sama długość zrobić
{*range(i,i+4)}
jak{i,i+1,i+2,i+3}
.źródło
Labirynt, 41 bajtów
Odpowiedź collab z @ MartinBüttner. Myślę, że wycisnęliśmy ten daleko poza moje początkowe oczekiwania.
Wyjście jest
1
zgodne z prawdą, puste dla fałszu. Wypróbuj online!Szybkie wyjaśnienie
Konwertuj każdą liczbę
n
na binarną liczbę całkowitą 1, po której następujen+1
zero, tj2^(n+1)
. Bitowo LUB wyniki i sprawdź1111
(w formacie binarnym). Potęgowanie należy zaimplementować ręcznie w Labiryncie.Szczegółowe wyjaśnienie
Zwykły podkład:
n
i popn*10 + <digit>
. Aby rozpocząć nowy numer,_
przesuwa zero.Ustawiać
Wykonanie rozpoczyna się w lewym górnym rogu, ze wskaźnikiem instrukcji skierowanym w prawo. Wykonujemy:
Oprócz skutecznego wypychania zer, instrukcje te nie zmieniają stosu.
Lewa pętla: wykładnicza i bitowa LUB
Labirynt nie ma potęgowania, więc musimy go wdrożyć ręcznie. Najpierw czytamy liczbę całkowitą
?
, a ponieważ jest to z pewnością pozytywne, skręcamy w prawo._1
naciska 1 i wchodzimy w wewnętrzną pętlę.Pętla wewnętrzna wykonuje następujące czynności:
Ponieważ jest to pętla „do-while”, dane wejściowe są
n
obliczane2^(n+1)
. Kończymy30
zerowaniem danych wejściowych na stosie i zamieniamy to zero na 30. Następnie wykonujemy te same instrukcje z konfiguracji, ale tym razem są one faktycznie przydatne.Ta pętla jest kontynuowana dla każdej liczby na wejściu, aż EOF, gdy
?
zwróci 0. To powoduje, że poruszamy się do przodu zamiast skręcać, prowadząc do ...Bridge: dodatkowa konfiguracja
30
Po?
przekręca EOF od 0 do 30, które jest dociśnięte do stosu za pomocą pomocniczego}
. Ważne jest to, że wepchnęliśmy 30 do stosu pomocniczego dla każdej liczby wejściowej, więc teraz stos pomocniczy zawiera5 + 1 = 6
kopie liczby 30 .Tymczasem główny stos zawiera bitowe OR
2^(n+1)
dla każdego wejścian
. Nazwijmy to bitową LUBb
, ponieważ jest modyfikowane w odpowiedniej pętli.Prawa pętla: sprawdź wynik i wynik
Oto, co dzieje się w pętli po prawej stronie:
W przypadku tego programu zakończenie pracy jest trochę trudne. Oto możliwe sposoby zakończenia programu:
Po 3 iteracjach prawej pętli, i
b
wciąż jest pozytywna: Pamiętasz, jak umieściliśmy sześć 30 w stosie pomocniczym? Ponieważ używamy dwóch z nich w każdej iteracji, przy czwartej iteracji zaczynamy ciągnąć zera od spodu stosu pomocniczego. Powoduje to dzielenie przez zero, gdy to robimy{/
, a program się kończy.Po wyprowadzeniu 1 dla małego strita : Więc wykonaliśmy,
!
a następnie skręciliśmy w prawo na"
skrzyżowaniu no-op . Potem czeka nas kolejka górska, gdy znów zaczołgamy się po lewej stronie:Po kilku uruchomieniach w wykładniku stos wygląda mniej więcej tak
[12 | 30 30]
, że błędy dzielą się przez dzielenie przez zero po kolejnych dwóch iteracjach w prawej pętli.:
prawa pętla znajduje się na skrzyżowaniu. Jeśli wejście było, powiedzmy1 1 1 1 1
, tob
byłoby4
, potem2
, potem1
, potem0
po trzeciej iteracji. Zamiast zwracać się do:
, IP porusza się teraz prosto i coś takiego jak poprzedni przypadek powoduje ostateczne zakończenie.W sumie to bałagan, jak program się kończy, ale hej wszystko, aby zaoszczędzić te kilka bajtów!
źródło
Mathematica,
394344313944 bajtówźródło
Haskell,
3934 bajtówPrzykład użycia:
f [1,2,3,3,4]
->True
.Podobne do odpowiedzi @ xnor , tzn. Sprawdź, czy którakolwiek z małych prostych znajduje się na liście wprowadzania. Właściwie testuję wszystkie „małe proste” (tj. 4 kolejne cyfry), zaczynając od dowolnej liczby z listy danych wejściowych, niektóre z nich są nieprawidłowe i dlatego zawsze kończą się niepowodzeniem
all
i nie zniekształcająany
testu, np[5,6,7,8]
.Edycja: @Zgarb zapisał 5 bajtów. Dzięki!
źródło
MATL, 11 bajtów
Wypróbuj online
źródło
JavaScript (ES6),
5553 bajtówzwraca
true
za prawdę ifalse
za fałsz.Jak to działa
Zwraca, jeśli jakaś wartość w [0, 1, 2, 3] spełnia warunek, że dla każdej wartości w [0, 1, 2, 3] suma tych dwóch wartości znajduje się w tablicy wejściowej.
Zwróć więc, jeśli tablica ma wszystkie wartości w [0, 1, 2, 3] (niemożliwe), [1, 2, 3, 4], [2, 3, 4, 5] lub [3, 4, 5 , 6].
źródło
Ruby, 31 lat
Zamiast próbować być mądrym jak pierwsza odpowiedź Ruby , to po prostu przechodzi przez tablicę liczb całkowitych i dla każdej liczby całkowitej sprawdza, czy na wejściu jest mała prosta zaczynająca się od tej liczby całkowitej. Nie martwi się o możliwe wartości lub wyjątkowość.
Wydaje się, że używa tego samego algorytmu, co odpowiedź Sherlocka .
źródło
Rubinowy,
585550474333 bajtówWłaśnie teraz zobaczyłem, że zostałem pobity przez odpowiedź Ruby Paula . Nie zniechęcam się jednak, ponieważ myślę, że nadal może to być przyzwoita odpowiedź przy odrobinie golfa. Częściowo w oparciu o odpowiedź Python na xnor .
Edycja: Trochę gry w golfa i korygowanie pomyłki w trójce warunkowej.
Edycja: Używam teraz Nie
.any?
tak, jak Charles robi w ich odpowiedzi Ruby, ale tylko dlatego, że potrzebowałem prostego sposobu na usunięciea
i zwrócenie tylko prawdy i falsey z,!([*i..i+3]-l)[0]
ponieważ zwróciłoby.map
tablicętrue
ifalse
.Zwraca albo
true
albofalse
.Nie golfowany:
Ważna uwaga: dla tych, którzy chcą użyć
(a2 - a1).empty?
kodu do ustalenia, czy wszystkie elementya2
są wa1
środku, zauważ, że jeśli chcesz się upewnić, że, na przykład,[2,1,2]
dotyczy[1,2,3,3]
wielu elementów, potrzebujesz innego kodu. Odpowiednie omówienie tego problemu tutaj .źródło
0
w Ruby jest to prawda, myślę, że twoja odpowiedź jest nieprawidłowa.p
jest jednoznakową wartością fałszowania.Japt,
1312 bajtówPrzetestuj online! lub Zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Perl,
474342393729 bajtówObejmuje +1 dla
-p
Uruchom sekwencję na STDIN, np
smallstraight.pl
:Wyjaśnienie
źródło
CJam,
161512 bajtówDaje niepusty ciąg dla prawdziwych przypadków testowych i pusty ciąg dla fałszywych przypadków.
Zestaw testowy.
Wyjaśnienie
Pod koniec programu lista ta jest spłaszczana do jednego łańcucha i drukowana do STDOUT. Jeśli znaleziono którąkolwiek z małych prostych, pozostałe jej elementy będą w sznurku. W przeciwnym razie wszystkie listy byłyby puste, a zatem łańcuch również jest pusty.
źródło
[0 1 2 3]
się kosztuje 2 bajty.05AB1E ,
9810 bajtówPrawda zawiera tablicę w danych wyjściowych, fałsz ma miejsce, gdy dane wyjściowe nie są generowane. Kod:
Wyjaśnienie nieaktualne :
Wypróbuj online!
Wykorzystuje kodowanie CP-1252 .
źródło
JavaScript ES6 47 bajtów
JavaScript ES6 52 bajty
Stara odpowiedź
JavaScript ES6 64 bajty
dzięki ETHproductions za pomoc w oszczędzaniu kilku bajtów
Testowanie
źródło
t=(t>4)?t:1
.q=>q.sort().map(o=>(o-s?o-s<2?t++:t=t>4?t:1:0,s=o),t=1,s=9)|t>3
Ta wersja powraca1
do prawdy i0
fałszu.C #,
156151150131121939290 bajtówlub: (ta sama liczba bajtów)
Nie golfowany:
Duża edycja: Właśnie zdałem sobie sprawę, że muszę tylko opublikować funkcję, a nie cały program. To dużo oszczędza. Nie ma podstawki, nie trzeba konwertować ciągów znaków na liczby itp. Teraz zbliżamy się do znacznej liczby bajtów (w każdym razie dla języka nie golfowego).
źródło
main
w C # musi zwrócić albovoid
alboint
.) Niestety, zyskałem również 2 bajty, ponieważ spodziewałem się 0-5 zamiast 1-6. Tak czy inaczej utrata netto 1 bajta.Rubinowy - 80 -> 79 -> 76 -> 54 -> 48 -> 40 bajtów
Piąta próba (40 bajtów):
Używa składni lambda do zdefiniowania funkcji. (Dzięki konkurującemu Ruby golfistowi @ Sherlock9 za ten pomysł.)
Aby przetestować za pomocą połączenia lambda:
Czwarta próba:
Zastąpiony zero? i negacja z operatorem ===.
Trzecia próba:
Wykorzystuje wyrażenie regularne.
Druga próba:
Nowe podejście wykorzystuje dedup (uniq), sortuj i dołącz, a także włącz? aby wyszukać dopasowanie dowolnego rozwiązania w danych wejściowych renderowanych jako ciąg.
Pierwsza próba: 79 bajtów
Próbnik:
Używa deduplikacji (funkcja uniq) plus ustaw przecięcie (i operator), aby sprawdzić, czy którakolwiek z dobrych sekwencji pasuje do podanej sekwencji. Nie wymaga sortowania.
źródło
Pyth
13112 bajty dzięki Jakube!
Zwraca niepustą listę dla prawdy, pustą listę dla fałszu.
Wypróbuj online lub uruchom pakiet testowy (podzielony przez błąd składni Readability ™).
źródło
.PQ4
zamiast.:{SQ4
PHP, 95 bajtów
Widok rozstrzelony Wywołanie wejścia / funkcji Wydajnośćźródło
Poważnie, 21 bajtów
Wypróbuj online!
Zwraca wartość dodatnią dla wartości true, a 0 dla wartości false.
Wyjaśnienie:
źródło
PARI / GP , 71 bajtów
Można to prawdopodobnie pograć w golfa dalej, ale na początek:
Nie widzę sposobu na ograniczenie powielania bez użycia więcej miejsca; ta wersja ma 75 bajtów:
źródło
Siatkówka ,
7054 bajtówDane wejściowe to pojedynczy ciąg liczb całkowitych takich jak
13342
. Dane wyjściowe to1
jeśli znaleziono lub0
jeśli nie.Pamiętaj, że usunięcie duplikatów musi nastąpić tylko raz, ponieważ jest tylko pięć liczb. Konieczność usunięcia więcej niż jednej liczby oznaczałoby, że i tak nie ma małej prostej.
Wypróbuj online
Dzięki Martinowi za pomysł przeniesienia przecinków w grupach przechwytywania, oszczędzając aż 16 bajtów.
źródło
. $*x Replace numbers with n x's, where n is the number.
+` Repeat the following until the string stabilizes
(x+(x+,))\2 $2$1 Replace n*xm*x,m*x, with m*x,n*xm*x
(x+,)\1 $1 Replace x*n,x*n, with x*n,
(x+,)x\1xx\1xxx\1 Match n*x,xn*x,xxn*x,xxxn*x
ZaktualizowanoPyth, 11 bajtów
Zestaw testowy
Wygeneruj podciągi o długości 4 z [1..6], a następnie odfiltruj je pod kątem braku elementów, gdy zostaną usunięte elementy wejścia.
źródło
Galaretka, 9 bajtów
Musi istnieć 8-bajtowe rozwiązanie, będzie kontynuować wyszukiwanie ... Kod:
To jest to samo, co moje rozwiązanie 05AB1E .
Wyjaśnienie:
Wypróbuj online!
źródło
Œ!I=1ZS3e
...[1, 2, 1, 2, 1]
i niestety twoja druga odpowiedź niestety. Moja alternatywa wydaje się działać (ale myliłem się przed ... przetestuj ją też :)), skorzystaj z niej.Galaretka, 8 bajtów
Wypróbuj online! lub zweryfikuj prawdziwe przypadki testowe i przypadki fałszowania .
Jak to działa
źródło
Scala,
76706160 bajtówPróbnik:
źródło
JavaScript ES6 43 bajty
// nie mogłem tego w pełni uruchomić: /
Pobiera to liczbę 62 (111110 w systemie binarnym). Każda liczba w tablicy wejściowej usuwa ten bit
Wynikowa liczba powinna być albo
więc sprawdzam, czy wynik jest mniejszy niż 7 (0000111) lub czy jest równy 32 (100000)źródło
[3, 4, 5, 4, 3]
. Myślę, że musisz użyć 126 zamiast 62 ...TI-BASIC, 25 bajtów
Równoważne (nie golfowe) wyrażenie w języku Python, które można przetestować :
Ideą tego jest podzielność. Aby sprawdzić, czy występuje a
1, 2, 3, 4
,2, 3, 4, 5
lub3, 4, 5, 6
, możemy zmapować liczby 1-6 do 37-42, a następnie pomnożyć prawidłowe liczby razem.Każda z liczb w [37, 42] ma główny czynnik, którego brakuje innym liczbom.
Dlatego jeśli iloczyn pięciu liczb jest podzielny przez 37, pierwotna lista zawierała 1. Jeśli przez 19, zawierała 2; itd. Jeśli jest podzielna przez
37*19*13*5
=65*703
, zawiera1
,2
,3
, i4
podobnie dla pozostałych dwóch liczb.To rozwiązanie jest lepsze od jednego , że @Weregoose pisał w 2009 r.
źródło
Świnka,
11378 bajtówUżywana przeze mnie wersja Mumps to Cache InterSystems.
Nie mogę wymyślić krótszego sposobu gry w golfa; z inną techniką może to być możliwe, ale na razie to zrobi i przynajmniej będzie krótsze niż C ++ ... ale niewiele. Tak czy inaczej...OK, tutaj jest krótsza droga. Zamiast mieć 3 oddzielne zmienne dla krótkich serii, użyj jednej zmiennej dla wszystkich 6 „kostek” i wyodrębnij porcje później:
tyle dla mnie, że nie znalazłem lepszego sposobu z tą samą techniką ... powinienem spojrzeć, zanim skoczę, co? ;-)
Zostawię swoją oryginalną odpowiedź poniżej do celów historycznych ...
a oto wyjaśnienie, co dzieje się z kodem:
Nie testowałem każdego wpisu zgodnego z prawdą i fałszem, ponieważ wymagało to ręcznego wpisania ich wszystkich; ale przetestowałem w przybliżeniu pierwszą połowę każdego z nich, sprawdziłem, czy długie proste nadal wykazują prawdziwość, a kilka z zaznaczonych przebiegów niekoniecznie działa poprawnie ([4,2,5,3,4], [1,2,3,3 , 4] itd.) I wydaje się działać poprawnie.
źródło
Dyalog APL , 15 bajtów
{∨/∧/⍵∊⍨⍵∘.+⍳4}
wykorzystuje
⎕IO=0
⍳4
jest0 1 2 3
⍵∘.+⍳4
to 5 × 4 macierz każdej matrycy powiększona o każdą z nich⍳4
⍵∊⍨
sprawdza, czy elementy macierzy są w ręku, wynikiem jest macierz boolowska (0-lub-1), musimy znaleźć wiersz wszystkich 1∧/
jest redukcją według rzędów, wynikiem jest wektor boolowski∨/
oznacza redukcję tego wektoraźródło
Galaretka, 11
Wypróbuj online!
To właściwie kopia mojej odpowiedzi w Pyth, próbująca po prostu dowiedzieć się, jak połączyć łańcuchy. Wydaje się, że powinno być możliwe do gry w golfa.
Ekspansja:
Jeśli chcesz zadać jakieś twarde pytanie, na przykład, dlaczego separatory są różne, to moja odpowiedź brzmi: „Odpowiem za 6-8 tygodni”: P (Poważniej, myślę, że to dopasowanie wzorca, monad-dyad kontra nilad-dyad, ale nie wiem i nie chcę rozpowszechniać dezinformacji.)
źródło
Q Unique elements
Ṣ sort the list
ṡ4 all slices of length 4
ðf filter by {
6R range form 1 to 6
ṡ4 all slices of length 4 from that
Q
jest to z wielkimi literami operatorów overdot w dokumentacji. Może kiedyś był to przesada?