Die "aufsteigende Matrix" ist eine unendliche Matrix aus ganzen Zahlen (einschließlich 0), in der jedes Element das kleinste verfügbare Element ist, das zuvor in der jeweiligen Zeile und Spalte nicht verwendet wurde:
| 1 2 3 4 5 6 ...
--+----------------
1 | 0 1 2 3 4 5 ...
2 | 1 0 3 2 5 4 ...
3 | 2 3 0 1 6 7 ...
4 | 3 2 1 0 7 6 ...
5 | 4 5 6 7 0 1 ...
6 | 5 4 7 6 1 0 ...
. | ...............
Ihre Aufgabe ist es, ein Programm zu schreiben, das das Element ausgibt, das in der durch die Eingabe angegebenen Zeile und Spalte gefunden wurde. (Standardeingabe und -ausgabe)
Testfälle:
5 3 -> 6
2 5 -> 5
Es gelten die Code-Golf-Regeln - der kürzeste Code gewinnt.
PS Auch wenn dies algorithmischer Natur ist, kann der Code sehr, sehr präzise sein.
EDIT: Ich hatte nicht erwartet, die xor-Lösung so früh zu sehen. Ich hatte wirklich gehofft, 10 Beiträge mit einem algorithmischen Ansatz und dann die xor-Lösung zu sehen. In Anbetracht der Tatsache, dass es nicht viel Spaß macht, xor in verschiedenen Sprachen zu schreiben, empfehle ich Ihnen, auch einen algorithmischen Ansatz zu wählen.
Also, ja, ich denke, niemand kann jetzt die 5-Zeichen-Marke überschreiten - deshalb gratuliere ich Ilmari Karonen zu der klügsten und kürzesten Lösung. Vor uns liegt jedoch eine neue Herausforderung: Schreiben Sie die kürzeste algorithmische Lösung .
quelle
Antworten:
GolfScript, 5 Zeichen
In der Tat ist diese Aufgabe sehr einfach, sobald Sie das Muster erkannt haben. Das einzige unangenehme Bit ist die 1-basierte Indizierung. Wenn die Eingabeindizes auf Null basieren würden, würde diese 2-stellige Lösung ausreichen:
Um dies Lesern zu erklären, die mit GolfScript nicht vertraut sind, wertet der
~
Befehl die Eingabe aus und belässt die beiden Zahlen auf dem Stapel.^
Anschließend werden die beiden obersten Zahlen auf dem Stapel durch XOR verknüpft, sodass das Ergebnis für die Ausgabe übrig bleibt. Um mit 1-basierten Eingaben umzugehen, sind zwei weitere Befehle erforderlich:(
Verringert die oberste Zahl auf dem Stapel um eins, während\
die beiden obersten Elemente auf dem Stapel vertauscht werden.quelle
^
? Ich bezog mich auf die GolfScript Built-Ins-Seite und den Symmetric-Unterschied . Die Verwendung dieser Operation mit zwei Gruppen von Arrays ist sinnvoll, aber ich verstehe nicht, wie das bei nur zwei separaten Zahlen funktioniert.^
Operator das bitweise XOR zurück .Mathematica
1044Bearbeiten
Meine erste Antwort basierte auf einem von Ilmari festgestellten Missverständnis über die Art der Herausforderung. Hier ist ein weiterer Versuch.
Verwendung
quelle
K, 31
Hat Ilmari Karonens XOR-Logik gestohlen, die ich selbst nie entdeckt hätte.
quelle
PHP, 38
Nur eine einfache Implementierung von Ilmari Karonens XOR
<?php echo --$_GET['a']^--$_GET['b']?>
Verwendung:
... / xor.php? a = 4 & b = 7
druckt 6
quelle
Haskell 174
Ich dachte, ich würde eine Lösung finden, die sich nicht auf XOR stützt. Zu faul, um richtig Golf zu spielen.
Edit: Einen Tag später wurde mir klar, dass dies nur eine Berechnung des XOR ist. Wenn dies als algorithmische Lösung gilt, sollte dies auch für Ilmari Karonen gelten.
quelle
Python 2, 36
Ich denke, da ich gerade erst anfange, Python zu lernen, ist dies der perfekte Zeitpunkt, um meine erste Antwort mit Python zu übermitteln (und niemand hat mit Python geantwortet), und vielleicht könnte ich ein Feedback erhalten.
Vielen Dank an @IlmariKaronen für die sehr coole Verknüpfung.
Vielen Dank, dass Sie @Gareth für den Code unten.
Python 3, 56
Das ursprüngliche Programm, das ich geschrieben hatte.
IDEONE mit 2 und 5
IDEONE mit 3 und 3
quelle
input
wertet die Eingabe bereits aus,int()
sollte also nicht notwendig sein. Auch da Sie ein Int direkt voninput()
Ihnen bekommen, könnten Sie das-1
sofort tun . Sie können auch die Zwischenvariablen vollständig entfernen und nach rechts gehenprint(input()-1^input()-1)
. Ob der Import notwendig ist oder nicht - andere Python-Benutzer auf dieser Site bieten ihn nicht für Programme an, dieinput()
Python verwenden , aber ich bin kein Python-Programmierer, daher kann ich nicht sagen, ob dies notwendig ist oder nicht.print(input()-1^input()-1)
. Danke für die Hilfe!sys
?MATL , 2 Bytes
Probieren Sie es online!
MATL gibt die Herausforderung um einige Jahre nach, aber hey, eine natürliche 1-basierte Indizierung und eine bitweise xor-Funktion machen dies schön und ordentlich!
quelle
Perl 5 , 12 Bytes
Probieren Sie es online!
quelle
Javascript 13 Bytes
quelle
Japt , 5 Bytes
Probieren Sie es online!
quelle