Herausforderungsbeschreibung
In der Taximetrik ist ein Abstand zwischen zwei Punkten wie folgt definiert:
Betrachten Sie eine Matrix mit nur Nullen und Einsen:
0 0 0 1 0
1 0 0 0 0
0 0 0 0 0
1 0 0 1 0
1 0 0 0 0
Lassen Sie uns jede 1
auf den Abstand zum nächsten Unterschied 1
in der Matrix abbilden (natürlich unter der Annahme, dass der Abstand zwischen zwei benachbarten Zeilen / Spalten gleich 1 ist):
0 0 0 3 0
2 0 0 0 0
0 0 0 0 0
1 0 0 3 0
1 0 0 0 0
Finden Sie für diese Herausforderung anhand einer Matrix die oben gezeigte Entfernungskarte.
Beispiele
0 0 1
0 0 0
0 0 0
0 1 0
0 0 0
0 0 4
0 0 0
0 0 0
0 4 0
0 0 0
-----
0 0 0 0 0 0 1
0 1 0 1 0 0 0
1 1 0 0 0 0 1
0 0 1 0 0 0 0
0 0 0 0 0 1 0
0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 0 0 1 0 0 1
0 0 0 0 0 0 2
0 1 0 2 0 0 0
1 1 0 0 0 0 2
0 0 2 0 0 0 0
0 0 0 0 0 3 0
0 2 0 0 0 0 0
2 0 0 0 0 0 0
0 0 0 3 0 0 3
-----
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
-----
1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1
22 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 22
-----
0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 9 0 0 0 0 0 0 0 0 2 0 0 0 4
0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0
-----
1 1
1 1
Anmerkungen
- Sie können Eingaben in jedem vernünftigen Format vornehmen
- Abgesehen von
0
und1
können Sie zwei verschiedene Werte auswählen - Sie können davon ausgehen, dass eine Matrix nicht leer ist (mindestens eine Zeile mit einer Länge größer oder gleich 1 enthält) und auch rechteckig ist
- Sie können auch davon ausgehen, dass mindestens zwei Wahrheitswerte in der Matrix vorhanden sind (andernfalls ist die Ausgabe undefiniert).
- Sie können ein vollständiges Programm oder eine Funktion schreiben
- Anstatt eine neue Matrix zurückzugeben, können Sie eine vorhandene ändern
- Das ist Code-Golf , also machen Sie Ihre Byteanzahl so niedrig wie möglich!
code-golf
matrix
binary-matrix
shooqie
quelle
quelle
Antworten:
MATL ,
2322 BytesProbieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Um Zwischenergebnisse zu sehen, kann das Einfügen hilfreich sein
X#
zwischen zwei beliebige Anweisungen einen Anzeigestapel einzufügen.quelle
t
M
Taxi , 14652 Bytes
Probieren Sie es online!
Ich gehe davon aus, dass kein Mensch versuchen möchte, diesen Code so zu lesen Versuchen Sie es also online mit Kommentaren, aussagekräftigen Beschriftungen und besser lesbaren Ausgaben!
Eingabe: Zeichenfolge, die ein Array darstellt. Die Zeichenfolge muss bis 3 Zeichen vorgenommen werden:
0
,|
Zeilenumbrüche darstellen, und jede positive digit größer als eins (PDGTO). Ich benutze gerne8
. OP erlaubt Eingaben in jedem vernünftigen Format und ich glaube, dass dies geeignet ist. Die Zeichenfolge funktioniert nicht hat , um Format zu einer rechteckigen Anordnung , aber es wird davon ausgegangen werden, linksbündig , was auch immer es ist.Ausgabe: Array von Werten der minimalen Taxi Abstand von jeder zeigt
PDGTO
auf seinen nächsten anderePDGTO
.Beispiel:
Das zweite Ausgabeformat ist deutlich einfacher zu lesen, fügt dem Programm aber auch 7 Bytes hinzu und das ist Code-Golf . Es wäre möglich gewesen, am Ende zurückzugehen und alle nachfolgenden Nullen zu entfernen, anstatt die
0
Werte einfach aufzufüllen , aber das hätte noch mehr Bytes hinzugefügt und wurde als inakzeptabler Kostenfaktor angesehen.Hier ist der Text des nicht golfenen Codes mit Kommentaren, besseren Beschriftungen und klareren Ausgaben:
( Dies ist derselbe wie mit dem obigen Link.)
quelle
Python 3 + Anzahl , 102 Bytes
Probieren Sie es online!
Übernimmt die Eingabe als
numpy
Array.Python 3 , 127 Bytes
Probieren Sie es online!
quelle
Perl 5 , 197 Bytes
Probieren Sie es online!
quelle
$#
, im Grunde ...JavaScript (ES6), 97 Byte
Nimmt Eingaben in Curry-Syntax vor
(w)(a)
, wobei w die Breite der Matrix und a eine flache Anordnung von Nullen und Einsen ist. Gibt ein anderes flaches Array zurück.Testfälle
Dieses Snippet enthält eine Hilfsfunktion zum Formatieren der Ausgabe zur besseren Lesbarkeit.
Code-Snippet anzeigen
quelle
Oktave, 59 Bytes
Übernimmt die Eingabe als 2D-Array.
Probieren Sie es online!
Erläuterung:
Setzen Sie für jede im Array gefundene Position von 1s diese auf Null und berechnen Sie die Stadtblock-Entfernungstransformation des Arrays und setzen Sie die Position schließlich auf die berechnete Entfernung.
quelle
Python 3 mit Numpy ,
106101 Bytes5 Bytes weniger dank @notjagan
Funktion, die ein Numpy - Array eingibt und durch Ändern dieses Arrays ausgibt (d. H standardmäßig zulässig ist ).
Probieren Sie es online!
quelle
Gelee , 27 Bytes
Probieren Sie es online!
quelle