Im Spiel Yahtzee würfeln die Spieler mit fünf sechsseitigen Würfeln und versuchen, bestimmte Hände zu bilden, um Punkte zu erzielen. Eine solche Hand ist eine kleine Straße : vier aufeinanderfolgende Zahlen, nicht unbedingt in der richtigen Reihenfolge. Die drei möglichen kleinen Geraden sind 1, 2, 3, 4
, 2, 3, 4, 5
und 3, 4, 5, 6
.
Zum Beispiel [3, 5, 6, 1, 4]
enthält die kleine Gerade [3, 4, 5, 6]
.
Eingang
Eine unsortierte Liste mit fünf ganzen Zahlen zwischen 1 und 6 (einschließlich), die eine Yahtzee-Hand darstellen.
Ausgabe
Ein wahrer Wert, wenn die Hand eine kleine Straße und ansonsten einen falschen Wert enthält.
Testfälle
Wahrheit:
[[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]]
Falsch:
[[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]]
Davon inspiriert
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
quelle
quelle
[1,2,3,3,4]
. Viele Antworten sterben daran.Antworten:
MATL ,
71211986 BytesVielen Dank an @lirtosiast für das Entfernen von 2 Bytes
Wahrheit ist ein Array von Werten ungleich Null. Falsy ist ein leeres Array (es wird keine Ausgabe angezeigt).
Ab Release 16.2.0
u
ist standardmäßig stabil. Der Code benötigt also ein ExtraS
, um die Ausgabe zu sortieren:uSd7BXf
( 7 Bytes ). Der Link enthält diese Änderung.Probieren Sie es online!
quelle
Python, 44 Bytes
Zurück nach 9 Monaten mit einer Besserung. Wir brauchen nicht zu prüfen, ob
i
es in der Menge ist, mit der Idee von Zgarb, nur Startwerte in der Menge zu prüfen. Wir können jetzt auch<
für strenge Teilmengen verwenden, da diesei
ebenfalls einbezogen werden müssen.47 Bytes:
Prüft, ob ein Würfelwurf der Anfang eines kleinen geraden Satzes ist. Vielen Dank an Zgarb für die Idee, nur die Startwerte in der Liste zu überprüfen und 5 Bytes zu sparen.
Python 3.5 hat eine kürzere Satzkonvertierung für 45 Bytes
Es ist genauso lang
{*range(i,i+4)}
wie{i,i+1,i+2,i+3}
.quelle
Labyrinth, 41 Bytes
Eine Antwort in Zusammenarbeit mit @ MartinBüttner. Ich denke, wir haben dies weit über meine ursprünglichen Erwartungen hinaus gequetscht.
Die Ausgabe ist
1
für Wahres, leer für Falsches. Probieren Sie es online!Schnelle Erklärung
Konvertieren Sie jede Zahl
n
in eine binäre Ganzzahl 1, gefolgt vonn+1
Nullen, dh2^(n+1)
. Bitweise ODER die Ergebnisse und überprüfen Sie1111
(in Binär). Die Exponentiation muss manuell in Labyrinth implementiert werden.Ausführliche Erklärung
Die übliche Grundierung:
n
und drückenn*10 + <digit>
._
Drücken Sie die Null, um eine neue Nummer zu beginnen .Installieren
Die Ausführung beginnt oben links mit dem Anweisungszeiger nach rechts. Wir führen aus:
Abgesehen davon, dass effektiv Nullen gedrückt werden, ändern diese Anweisungen den Stapel nicht.
Linke Schleife: Potenzieren und bitweises ODER
Labyrinth hat keine Potenzierung, daher müssen wir es manuell implementieren. Zuerst lesen wir eine ganze Zahl mit
?
, und da dies garantiert positiv ist, biegen wir rechts ab._1
drückt 1 und wir betreten die innere Schleife.Die innere Schleife führt Folgendes aus:
Da dies eine do-while-Schleife ist, wird diese für die Eingabe
n
berechnet2^(n+1)
. Wir beenden die Eingabe mit Null auf dem Stapel und30
wandeln diese Null in 30 um. Wir führen dann die gleichen Anweisungen aus dem Setup aus, aber diesmal sind sie tatsächlich nützlich.Diese Schleife wird für jede Zahl in der Eingabe bis zu EOF fortgesetzt, wenn
?
0 zurückgegeben wird. Dadurch bewegen wir uns vorwärts, anstatt uns zu drehen, und führen zu ...Bridge: einige zusätzliche Einstellungen
Das
30
nach dem?
dreht die 0 von EOF in 30, die über zum Zusatzstapel geschoben wird}
. Von Bedeutung ist die Tatsache, dass wir für jede eingegebene Nummer eine 30 in den Zusatzstapel verschoben haben, sodass der Zusatzstapel5 + 1 = 6
jetzt Kopien der Nummer 30 enthält .In der Zwischenzeit enthält der Hauptstapel das bitweise ODER von
2^(n+1)
für jede Eingaben
. Nennen wir dies bitweises ODERb
, da es in der rechten Schleife geändert wird.Rechte Schleife: Ergebnis und Ausgabe prüfen
Folgendes passiert in der rechten Schleife:
Jetzt ist die Beendigung mit diesem Programm ein wenig schwierig. Hier sind die möglichen Möglichkeiten, wie das Programm beendet werden kann:
Nach 3 Iterationen der rechten Schleife und
b
immer noch positiv: Erinnern Sie sich, wie wir sechs 30s in den Hilfsstapel gelegt haben? Da wir bei jeder Iteration zwei davon verwenden, ziehen wir bei der vierten Iteration Nullen vom unteren Rand des Hilfsstapels. Dies führt zu einer Division durch Null{/
, und das Programm wird beendet.Nach der Ausgabe einer 1 für eine kleine Straße : Also haben wir ausgeführt und sind
!
dann an der No-Op-"
Kreuzung nach rechts abgebogen. Dann warten wir auf eine Achterbahnfahrt, während wir wieder über die linke Hälfte kriechen:Nach ein paar Schritten im Exponentiator sieht der Stack so aus, als ob er
[12 | 30 30]
nach zwei weiteren Iterationen in der rechten Schleife durch Division durch Null ausfällt.:
die rechte Schleife an einer Kreuzung befindet. Wenn die Eingabe beispielsweise wäre1 1 1 1 1
, dannb
wäre es4
, dann2
, dann1
,0
nach der dritten Iteration. Anstatt sich umzudrehen:
, bewegt sich die IP jetzt geradeaus, und so etwas wie der vorherige Fall führt zu einer eventuellen Beendigung.Alles in allem ist es ein Chaos, wie das Programm endet, aber hey alles, um diese wenigen Bytes zu retten!
quelle
Mathematica,
394344313944 Bytesquelle
Haskell,
3934 BytesAnwendungsbeispiel:
f [1,2,3,3,4]
->True
.Ähnlich wie bei der Antwort von @ xnor , dh überprüfen Sie, ob eine der kleinen Geraden in der Eingabeliste enthalten ist. Tatsächlich teste ich alle "kleinen Geraden" (dh 4 aufeinanderfolgende Nummern), beginnend mit einer der Nummern aus der Eingabeliste, von denen einige ungültig sind und daher den
all
Test immer nicht bestehen und den Test nicht verzerrenany
, z[5,6,7,8]
.Edit: @Zgarb sparte 5 Bytes. Vielen Dank!
quelle
MATL, 11 Bytes
Probieren Sie es online aus
quelle
JavaScript (ES6),
5553 Bytekehrt
true
für wahr undfalse
für falsch.Wie es funktioniert
Rückgabe, wenn ein Wert in [0, 1, 2, 3] die Bedingung erfüllt, dass sich für jeden Wert in [0, 1, 2, 3] die Summe dieser beiden Werte im Eingabearray befindet.
Geben Sie also zurück, wenn das Array alle Werte in [0, 1, 2, 3] (unmöglich), [1, 2, 3, 4], [2, 3, 4, 5] oder [3, 4, 5] enthält 6].
quelle
Rubin, 31
Anstatt zu versuchen, klug wie die erste Ruby-Antwort zu sein , wird nur das Array von Ganzzahlen durchlaufen und für jede Ganzzahl geprüft, ob die Eingabe eine kleine Gerade enthält, die mit dieser Ganzzahl beginnt. Kümmert sich nicht um die möglichen Werte oder die Eindeutigkeit.
Dies scheint den gleichen Algorithmus wie Sherlocks Antwort zu verwenden .
quelle
Ruby,
585550474333 BytesIch habe gerade gesehen, dass ich von Pauls Ruby-Antwort hart getroffen worden bin . Ich bin jedoch nicht davon abgeschreckt, da ich denke, dass dies mit etwas mehr Golf noch eine anständige Antwort sein könnte. Zum Teil basierend auf der Python-Antwort von xnor .
Edit: Etwas Golf spielen und eine Verwechslung in der ternären Bedingung korrigieren.
Edit: Ich benutze jetzt
.any?
wie Nicht, dass Charles in ihrer Ruby-Antwort tut, sondern nur, weil ich einen einfachen Weg brauchte, um eine Reihe von und zu entfernena
und nur eine Wahrheit und eine Falschheit mit!([*i..i+3]-l)[0]
da.map
zurückzugeben .true
false
Gibt entweder
true
oder zurückfalse
.Ungolfed:
Wichtiger Hinweis: Für diejenigen, die verwendet werden soll
(a2 - a1).empty?
Code , um zu bestimmen , ob alle Elementea2
in sinda1
, beachten Sie, dass , wenn Sie sicherstellen möchten , dass zum Beispiel[2,1,2]
in ist[1,2,3,3]
auf Vielzahl von Elementen, Sie anderen Code benötigen. Relevante Diskussion dieses Problems hier .quelle
0
es in Ruby wahr ist, denke ich, dass Ihre Antwort ungültig ist.p
ist ein aus einem Zeichen bestehender falscher Wert.Japt,
1312 BytesTesten Sie es online! oder Überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Perl,
474342393729 BytesBeinhaltet +1 für
-p
Führen Sie mit der Sequenz STDIN aus, z
smallstraight.pl
:Erläuterung
quelle
CJam,
161512 BytesErgibt eine nicht leere Zeichenfolge für echte Testfälle und eine leere Zeichenfolge für falsche.
Testsuite.
Erläuterung
Am Ende des Programms wird diese Liste zu einer einzigen Zeichenfolge zusammengefasst und an STDOUT ausgegeben. Wenn eine der kleinen Geraden gefunden wurde, befinden sich die verbleibenden Elemente in der Zeichenfolge. Ansonsten waren alle Listen leer und der String ist auch leer.
quelle
[0 1 2 3]
würde 2 Bytes kosten.05AB1E ,
9810 BytesWahrheit enthält ein Array in der Ausgabe, falsch ist, wenn keine Ausgabe erzeugt wird. Code:
Erklärung veraltet :
Probieren Sie es online!
Verwendet die CP-1252- Codierung.
quelle
Javascript ES6 47 Bytes
Javascript ES6 52 Bytes
Alte Antwort
Javascript ES6 64 Bytes
danke an ETHproductions für die hilfe mehrere bytes zu sparen
Testen
quelle
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
Diese Version kehrt1
für wahr und0
für falsch zurück.C #,
156151150131121939290 Bytesoder: (gleiche Anzahl von Bytes)
Ungolfed:
Big Edit: Hab gerade gemerkt, dass ich nur eine Funktion posten muss, nicht ein ganzes Programm. Das spart eine Menge. Kein Boilerplate, keine Notwendigkeit, Strings in Zahlen umzuwandeln usw. Jetzt nähern wir uns einer respektablen Anzahl von Bytes (für eine nicht-golfende Sprache jedenfalls).
quelle
main
in C # muss entwedervoid
oder zurückgegeben werdenint
). Leider habe ich auch 2 Bytes zugelegt, weil ich 0-5 statt 1-6 erwartet habe. Also trotzdem 1 Byte Nettoverlust.Ruby - 80 -> 79 -> 76 -> 54 -> 48 -> 40 Bytes
Fünfter Versuch (40 Bytes):
Verwendet Lambda-Syntax, um die Funktion zu definieren. (Vielen Dank an Ruby Golfer @ Sherlock9 für diese Idee.)
So testen Sie mit Lambda-Aufruf:
Vierter Versuch:
Ersetzt nil? und Negation mit === Operator.
Dritter Versuch:
Verwendet regulären Ausdruck.
Zweiter Versuch:
Neuer Ansatz verwendet dedup (uniq), sortieren und verbinden sowie include? um nach einer Übereinstimmung aller Lösungen in der als Zeichenfolge gerenderten Eingabe zu suchen.
Erster Versuch: 79 Bytes
Prüfer:
Verwendet Deduplizierung (Uniq-Funktion) plus Schnittmenge (& -Operator), um zu testen, ob eine der guten Sequenzen mit der angegebenen Sequenz übereinstimmt. Keine Sortierung nötig.
quelle
Pyth,
13112 Bytes dank Jakube!
Gibt eine nicht leere Liste für wahrheitsgemäß und eine leere Liste für falsch zurück.
Probieren Sie es online aus oder führen Sie die Test Suite aus (aufgeteilt durch einen Syntaxfehler für Readability ™).
quelle
.PQ4
statt.:{SQ4
PHP, 95 Bytes
Explosionszeichnung Eingabe / Funktionsaufruf Ausgabequelle
Im Ernst, 21 Bytes
Probieren Sie es online!
Gibt einen positiven Wert für true und eine 0 für false aus.
Erläuterung:
quelle
PARI / GP , 71 Bytes
Dies kann wahrscheinlich weiter golfen werden, aber zu Beginn:
Ich sehe keine Möglichkeit, die Duplizierung zu reduzieren, ohne mehr Speicherplatz zu belegen. Diese Version ist 75 Bytes:
quelle
Retina ,
7054 BytesDie Eingabe ist eine einzelne Zeichenfolge der Ganzzahlen wie
13342
. Die Ausgabe ist ein1
wenn gefunden oder ein0
wenn nicht.Beachten Sie, dass das Entfernen von Duplikaten nur einmal erfolgen muss, da es nur fünf Zahlen gibt. Mehr als eine Zahl entfernen zu müssen, würde bedeuten, dass es sowieso keine kleine Straße gibt.
Probieren Sie es online aus
Vielen Dank an Martin für die Idee, die Kommas innerhalb der Erfassungsgruppen zu verschieben und dabei satte 16 Bytes zu sparen.
quelle
. $*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
AktualisiertPyth, 11 Bytes
Testsuite
Generieren Sie die Teilzeichenfolgen mit der Länge 4 von [1..6] und filtern Sie sie dann nach keinen verbleibenden Elementen, wenn die Elemente der Eingabe entfernt werden.
quelle
Gelee, 9 Bytes
Es muss eine 8-Byte-Lösung geben, die weiter sucht ... Code:
Dies ist das gleiche wie meine 05AB1E- Lösung .
Erläuterung:
Probieren Sie es online!
quelle
Œ!I=1ZS3e
...[1, 2, 1, 2, 1]
und Ihre andere Antwort leider auch nicht. Meine Alternative scheint zu funktionieren (aber ich habe mich vorher geirrt ... teste sie auch :)).Gelee, 8 Bytes
Probieren Sie es online! oder überprüfen Sie die wahrheitsgemäßen Testfälle und die falschen Testfälle .
Wie es funktioniert
quelle
Scala,
76706160 BytesPrüfer:
quelle
Javascript ES6 43 Bytes
// konnte das nicht ganz zum Laufen bringen: /
Dies nimmt die Zahl 62 (111110 in binär). Für jede Zahl im Eingabearray wird dieses Bit entfernt
Die resultierende Zahl sollte entweder sein
Also überprüfe ich, ob das Ergebnis kleiner als 7 (0000111) oder gleich 32 (100000) istquelle
[3, 4, 5, 4, 3]
. Ich denke, Sie müssen 126 anstelle von 62 verwenden ...TI-BASIC, 25 Byte
Ein äquivalenter (ungolfed) Python-Ausdruck, den Sie testen können :
Die Idee dahinter ist die Teilbarkeit. Um zu überprüfen, ob a
1, 2, 3, 4
,2, 3, 4, 5
oder3, 4, 5, 6
vorkommt, können wir die Zahlen 1-6 bis 37-42 zuordnen und dann die richtigen Zahlen miteinander multiplizieren.Jede der Zahlen in [37,42] hat einen Primfaktor, den die anderen Zahlen nicht haben.
Wenn also das Produkt der fünf Zahlen durch 37 teilbar ist, enthielt die ursprüngliche Liste eine 1. Wenn es durch 19 enthielt, enthielt es eine 2; etc. Wenn es teilbar durch
37*19*13*5
=65*703
, es enthält1
,2
,3
, und4
und in ähnlicher Weise für die andere beiden Zahlen.Diese Lösung ist eine Verbesserung gegenüber einer , die @Weregoose im Jahr 2009 veröffentlicht hat.
quelle
Mumps,
11378 BytesDie Version von Mumps, die ich benutze, ist InterSystems Cache.
Ich kann mir keine Möglichkeit vorstellen, diese Technik kürzer zu spielen. Mit einer anderen Technik könnte es möglich sein, aber im Moment reicht das und es ist zumindest kürzer als C ++ ... aber nicht viel. Sowieso...OK, hier ist ein kürzerer Weg. Anstatt 3 separate Variablen für die kurzen Läufe zu haben, verwenden Sie eine einzige Variable für alle 6 "Würfel" und extrahieren Sie die Teile später:
So viel für mich, dass ich mit der gleichen Technik keinen besseren Weg finde ... Ich sollte nachsehen, bevor ich springe, oder? ;-)
Ich werde meine ursprüngliche Antwort unten für historische Zwecke hinterlassen ...
Und hier ist die Erklärung, was mit dem Code los ist:
Ich habe nicht jede einzelne wahrheitsgemäße und falsche Eingabe getestet, da sie manuell eingegeben werden musste. aber ich habe ungefähr die erste Hälfte von jedem getestet, verifiziert, dass die langen Geraden immer noch wahr sind und dass einige der Läufe nicht unbedingt korrekt funktionieren ([4,2,5,3,4], [1,2,3,3 , 4] etc.) und scheint korrekt zu funktionieren.
quelle
Dyalog APL , 15 Bytes
{∨/∧/⍵∊⍨⍵∘.+⍳4}
Verwendet
⎕IO=0
⍳4
ist0 1 2 3
⍵∘.+⍳4
ist 5 × 4 eine Matrix von jedem Chip, inkrementiert um jeden von⍳4
⍵∊⍨
prüft, ob die Elemente der Matrix in der Hand sind, Ergebnis ist eine boolesche (0-or-1) Matrix, wir müssen eine Reihe aller Einsen finden∧/
ist die And-Reduktion um Zeilen, Ergebnis ist ein Boolescher Vektor∨/
ist die oder-Reduktion dieses Vektorsquelle
Jelly, 11
Probieren Sie es online!
Dies ist so ziemlich eine Kopie meiner Pyth-Antwort und versucht nur herauszufinden, wie man Sachen verkettet. Fühlt sich an, als sollte es golffähig sein.
Erweiterung:
Wenn Sie schwierige Fragen stellen möchten, zum Beispiel, warum die Trennzeichen unterschiedlich sind, dann lautet meine Antwort an Sie: "Ich antworte in 6-8 Wochen": P (Im Ernst, ich denke, es ist die Musterübereinstimmung, monad-dyad gegen nilad-dyad, aber ich weiß es nicht und möchte keine Fehlinformationen verbreiten.)
quelle
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
steht mit den Overdot-Operatoren in Großbuchstaben in der Dokumentation. Vielleicht war es einmal ein Overdot?