Die Herausforderung ist einfach; gibt die folgenden sechs 2D-Integer-Arrays aus:
[[ 1, 11, 21, 31, 41, 51],
[ 3, 13, 23, 33, 43, 53],
[ 5, 15, 25, 35, 45, 55],
[ 7, 17, 27, 37, 47, 57],
[ 9, 19, 29, 39, 49, 59]]
[[ 2, 11, 22, 31, 42, 51],
[ 3, 14, 23, 34, 43, 54],
[ 6, 15, 26, 35, 46, 55],
[ 7, 18, 27, 38, 47, 58],
[10, 19, 30, 39, 50, 59]]
[[ 4, 13, 22, 31, 44, 53],
[ 5, 14, 23, 36, 45, 54],
[ 6, 15, 28, 37, 46, 55],
[ 7, 20, 29, 38, 47, 60],
[12, 21, 30, 39, 52]]
[[ 8, 13, 26, 31, 44, 57],
[ 9, 14, 27, 40, 45, 58],
[10, 15, 28, 41, 46, 59],
[11, 24, 29, 42, 47, 60],
[12, 25, 30, 43, 56]]
[[16, 21, 26, 31, 52, 57],
[17, 22, 27, 48, 53, 58],
[18, 23, 28, 49, 54, 59],
[19, 24, 29, 50, 55, 60],
[20, 25, 30, 51, 56]]
[[32, 37, 42, 47, 52, 57],
[33, 38, 43, 48, 53, 58],
[34, 39, 44, 49, 54, 59],
[35, 40, 45, 50, 55, 60],
[36, 41, 46, 51, 56]]
Was sind diese 2D-Integer-Arrays? Dies sind die Zahlen, die in einem Zaubertrick mit Karten verwendet werden, die diese Zahlen enthalten:
Der Zaubertrick fordert jemanden auf, sich eine Zahl im Bereich [1, 60] auszudenken und demjenigen, der den Zaubertrick ausführt, alle Karten zu geben, die diese Zahl enthalten. Derjenige, der den Zaubertrick ausführt, kann dann die oberen linken Zahlen (alle Zweierpotenzen) der gegebenen Karten addieren, um die Zahl zu erhalten, an die die Person gedacht hat. Einige zusätzliche Erklärungen, warum dies funktioniert, finden Sie hier.
Herausforderungsregeln:
- Sie können die sechs 2D-Integer-Arrays in jedem vernünftigen Format ausgeben. Kann mit Trennzeichen gedruckt werden; kann ein 3D-Integer-Array sein, das die sechs 2D-Integer-Arrays enthält; kann eine String-Liste von Zeilen sein; etc.
- Sie dürfen die untere rechte Position der letzten vier Karten mit einem negativen Wert im Bereich
[-60, -1]
oder im Zeichen füllen,'*'
anstatt es wegzulassen, um die rechteckigen Matrizen der 2D-Ganzzahl-Arrays zu erstellen (nein, Sie dürfen sie nicht mit0
oder ohne füllen) -integer wienull
/undefined
als Alternative, mit der Ausnahme*
, dass in den eigentlichen Karten auch ein Stern verwendet wird. - Die Reihenfolge der Zahlen in den Matrizen ist obligatorisch. Obwohl es für den physischen Zaubertrick keine Rolle spielt, sehe ich diese Herausforderung hauptsächlich als eine Matrix - eine Kolmogorov-Komplexität , daher die Einschränkung der Ordnung.
Die Reihenfolge der Matrizen selbst in der Ausgabeliste kann beliebig sein, da aus der Karte oben links hervorgeht, welche Matrix welche ist.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln mit Standard-E / A-Regeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp, verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu (z. B. TIO ).
- Außerdem wird dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
code-golf
number
kolmogorov-complexity
matrix
Kevin Cruijssen
quelle
quelle
n
auf derk
Karte erscheint; meine Herausforderung ist a KC-Challenge zur Ausgabe der sechs Matrizen.)[ascii-art]
Herausforderung mit strengen (MD5) Ausgaberegeln ist, bei denen meine sehr flexibel sind (und die Zeilen / Spalten vertauscht sind und der Bereich[1,60]
stattdessen ist[1,63]
; ziemlich kleine Unterschiede, aber immer noch).Antworten:
MATL ,
1211 Bytes-1 Byte danke an den Master selbst :)
Erläuterung:
Probieren Sie es online!
quelle
Perl 6 ,
6346 BytesProbieren Sie es online!
Ausgabe als 2D-Arrays auf mehreren Zeilen, wobei das letzte Array von jedem abgeschnitten wird, falls erforderlich.
quelle
Python 2 , 76 Bytes
Probieren Sie es online!
Die Methode hier besteht darin, eine Liste aller möglichen Zahlen zu erstellen
r(61)
und diese dann auf die Liste der Zahlen für eine Karte zu reduziereni&2**k
.Durch Verwenden von List Slicing wird diese 1D-Liste von Zahlen auf die richtige 6x5-Kartengröße umgeordnet
[card nums][j::5]for j in r(5)
.Dann wird dieser Generator nur für 6 Karten wiederholt
for k in r(6)
.Während ich keine Lösung mit weniger als 76 Bytes finden konnte, sind hier zwei andere, die ebenfalls 76 Bytes umfassen:
Probieren Sie es online!
Das nächste ist von Jonathan Allan inspiriert .
Probieren Sie es online!
Alle Kommentare werden sehr geschätzt.
quelle
Holzkohle , 26 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Ich habe versucht, die Einträge direkt zu berechnen, aber dies waren bereits 27 Bytes, bevor ich
*
das unten rechts korrigierte. Gibt jede Zeile mit Leerzeichen und einer Leerzeile zwischen den Karten aus. Erläuterung:quelle
*
zum Spaß hinzugefügt, nachdem ich die Sterne auf den Karten gesehen habe. Ich habe mich gefragt, ob es irgendwelche Sprachen geben würde, die es verwenden, aber ich bin froh, dass es mindestens eine gibt. :) Gute Antwort!*
ist mindestens so kurz wie alles andere.05AB1E , 16 Bytes
Probieren Sie es online!
Erläuterung
05AB1E , 17 Bytes
Probieren Sie es online!
Erläuterung
quelle
Schale , 13 Bytes
Probieren Sie es online!
Erläuterung
quelle
Python 2 ,
82807874 BytesProbieren Sie es online!
-4 Bytes, danke an Jonathan Allan
quelle
iter
Schlüsselwort ist hier überflüssig, da ein Generator die Arbeit genauso gut erledigt .Japt , 14 Bytes
Versuch es
quelle
JavaScript (ES6),
9088 BytesProbieren Sie es online!
Kommentiert
quelle
Python 2 , 73 Bytes
Inspiration von TFeld's und The Matt's .
Probieren Sie es online!
quelle
C (gcc) 95 Bytes
Probieren Sie es online!
Gibt die Matrizen als 3D-Int-Array in o zurück.
Die letzten 4 Matrizen haben -1 als letzten Wert.
2 Bytes dank Kevin Cruijssen gespeichert.
78 Bytes dank Arnauld gespeichert .quelle
o[i][4][5]=-1;for(j=k=0;
,for(o[i][4][5]=-1,j=k=0;
damit die Klammern entfernt werden können. Nette Antwort übrigens +1 von mir.#include
CJam (18 Bytes)
Online-Demo . Dies ist ein vollständiges Programm, das auf stdout ausgegeben wird.
Präparation
quelle
Jelly , 13 Bytes
Ein niladischer Link, der eine Liste von (6) Listen von Listen von ganzen Zahlen liefert. (Es wird die Standardoption ohne
*
oder mit negativem Füllzeichen ausgegeben.)Probieren Sie es online!
Wie?
Viele 15er, ohne den Trick "Minimale Länge bei Aufteilung in fünf" zu bemerken:
... und als ich versuchte, eine kürzere zu finden, bekam ich eine weitere 13, ohne den Trick überhaupt zu brauchen:
quelle
Wolfram-Sprache (Mathematica) , 88 Bytes
quelle
Transpose@Partition[#~Append~-1,5]&/@Last@Reap[Do[Sow[k,k~NumberExpand~2],{k,60}],Except@0]
~
Trick an einer weiteren Stelle angewendet und die Variablek
durch ersetztNull
. Entschuldigung, keine Zeit, einen tio-Link hinzuzufügen.Wolfram Language (Mathematica) , 99 Bytes
Probieren Sie es online!
quelle
Transpose@
anstattTranspose[...]
; Auffüllen auf 30 Einträge vor dem Partitionieren; Verwenden SieTable[...,{k,6}]
, um zu vermeiden, dass Siek=#
.Transpose@
funktioniert, nachdem Sie eingezogenPadRight
sindPartition
. Ein weiterer Kommentar ist, dass die Frage""
den Platzhalter nicht zu berücksichtigen scheint . Sie können es ersetzen,-1
ohne ein Byte zu verlieren.Jelly , 13 Bytes
Probieren Sie es online!
Lose basierend auf der MATL-Antwort von flawr . Ein Niladic-Link, der bei Bedarf eine Liste mit Listen ausgibt.
quelle
R , 73 Bytes
Ich bin mir nicht ganz sicher, ob ich die Bestellanforderung erfüllt habe, da R die Matrizen standardmäßig spaltenweise ausfüllt, sodass die Reihenfolge, in der sie physisch auf den Karten angezeigt wird, mit der Reihenfolge übereinstimmt, in der die Matrizen in R zugeordnet sind.
Probieren Sie es online!
quelle
T-SQL, (
1.1681.139 Bytes)Ich wollte nur wissen, dass ich es schaffen kann.
Optimierte Version
Online-Demo
Probieren Sie es online!
Ausführliche Version - mit Notizen als SQL-Kommentare
Voila!
Anmerkung 1: Einige der Logik bezieht sich auf das Rendern von eckigen Klammern und Kommas.
Hinweis 2: Neuere Versionen von SQL Server bieten kompaktere Ansätze zum Erstellen von durch Kommas getrennten Listen. (Dies wurde auf SQL Server 2016 erstellt.)
Hinweis 3: Arrays für eine bestimmte Karte werden nicht sortiert (was gemäß der Spezifikation in Ordnung ist). Zahlen innerhalb eines Arrays sind korrekt sortiert. In diesem Fall rendert jede "Karte" der Frage ihre Arrays in einer separaten Zeile in den Ergebnissen.
Kürzere bis hartcodierte Arrays?
Ja.
Byte mich.
quelle
C # (Visual C # Interactive Compiler) , 112 Byte
Probieren Sie es online!
quelle
Rot ,
108107 BytesProbieren Sie es online!
quelle
APL + WIN,
6562 BytesProbieren Sie es online! Mit freundlicher Genehmigung von Dyalog Classic
quelle
MATLAB, 155 Bytes
Dies könnte kürzer als mehrere Zeilen sein, aber ich wollte es in einer Codezeile tun.
quelle
05AB1E , 14 Bytes
Probieren Sie es online!
quelle
žO
statt nur6L
? Ich weiß, dass Sie sie nicht in Ihrer Map verwenden, aber ich bin gespannt, warum Sieaeiouy
eine Liste mit 6 Werten erstellt haben. xD Schöne Antwort, übrigens!6L
,6и
,5Ý
,5°
, oder9!
.тœ
,₅œ
,₁œ
, auch Arbeit, sind cool diejenigen recht zu (:₆b
würde auch funktionieren;)