Offline-Echtzeit zum Schreiben eines Python-Implementierungsbeispiels für das E15-Problem

Problem: http://nabetani.sakura.ne.jp/hena/orde15nohil/ Antwortlinks: http://qiita.com/Nabetani/items/705fa83cfbf20377b92f Ereignis: https://yhpg.doorkeeper.jp/events/61418

  1. Setzen Sie "Number" auf "3 base number" und erstellen Sie eine Zahlenfolge, die eine Ziffer für jeden Nummernkreis ist, der eine Menge von NxN-Blöcken bildet.
  2. Um "Zahl" in "x, y-Koordinaten" mit 2x2 als Mindesteinheit umzuwandeln, stellen Sie jede Ziffer der ternären Zahl auf 0 oder 1 ein, um sie "binär" zu machen.
  3. Suchen Sie die benachbarte "Zahl" aus jeder der vier benachbarten "x, y-Koordinaten" oben, unten, links und rechts.
  4. Um die "Zahl" zu finden, stellen Sie jede Ziffer der "Binärzahl" der "x, y-Koordinaten" auf 0, 1, 2 ein, um sie zu einer "ternären Zahl" zu machen.
  5. Die "x, y-Koordinaten", die dem Leerzeichen unten rechts entsprechen, werden jedoch nicht zu "Zahlen".
number 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Binär 0 1 2 10 11 12 20 21 22 100 101 102 110 111 112 120 121 122 200
2⇒0 0 1 0 10 11 10 00 01 00 100 101 100 110 111 110 100 101 100 000
Binäre Konvertierung ⇒ X-Koordinate 0 1 0 2 3 2 0 1 0 4 5 4 6 7 6 4 5 4 0
1⇒0 2⇒1 0 0 1 00 00 01 10 10 11 000 000 001 000 000 001 010 010 011 100
Binäre Konvertierung ⇒ Y-Koordinate 0 0 1 0 0 1 2 2 3 0 0 1 0 0 1 2 2 3 4
#!/usr/bin/env python
# -*- coding:utf-8 -*-

def base(n, b):
    return (n // b and base(n // b, b) or '') + str(n % b)

def number(x, y):
    return (x < 0 or y < 0 or x & y != 0 or  # return True if there is no number
            int(str(int(bin(x)[2:]) + int(bin(y)[2:].replace('1', '2'))), 3))  # x:0or1 + y:0or2

def solve(data):
    digits = base(int(data), 3)
    x = int(digits.replace('2', '0'), 2)                    # x:012 -> 010
    y = int(digits.replace('1', '0').replace('2', '1'), 2)  # y:012 -> 001
    neighbors = number(x, y - 1), number(x - 1, y), number(x + 1, y), number(x, y + 1)
    return ','.join(str(n) for n in neighbors if n is not True)

def test(n, data, correct):
    answer = solve(data)
    if answer == correct:
        print('OK #%s: "%s" -> "%s"' % (n, data, answer))
    else:
        print('NG #%s: "%s" -> "%s" != "%s"' % (n, data, answer, correct))

test(0, "21", "19,22,23")
test(1, "0", "1,2")
test(2, "1", "0,3")
test(3, "2", "0,6")
test(4, "3", "1,4,5")
test(5, "4", "3,9")
test(6, "9", "4,10,11")
test(7, "15", "11,16,17")
test(8, "27", "13,28,29")
test(9, "32", "30")
test(10, "47", "45,51")
test(11, "65", "63,69")
test(12, "80", "78,162")
test(13, "199", "198,201")
test(14, "204", "200,205,206")
test(15, "243", "121,244,245")
test(16, "493", "492")
test(17, "508", "507")
test(18, "728", "726,1458")
test(19, "793", "792,795")
test(20, "902", "900,906")
test(21, "981", "976,982,983")
test(22, "1093", "1092,2187")
test(23, "1202", "1200")
test(24, "1300", "1299,1305")
test(25, "1962", "1952,1963,1964")
test(26, "2188", "2187,2190")
test(27, "2405", "2403,2409")
test(28, "3326", "3324")
test(29, "6561", "3280,6562,6563")
test(30, "6612", "6608,6613,6614")
test(31, "7058", "7056,7062")
test(32, "8444", "8442,8448")
test(33, "9841", "9840,19683")
test(34, "15243", "15239,15244,15245")
test(35, "19946", "19944,19950")
test(36, "21148", "21147")
test(37, "39365", "39363")
test(38, "39366", "19682,39367,39368")
test(39, "55694", "55692,55698")
test(40, "57245", "57243")
test(41, "66430", "66429,66432")
test(42, "92740", "92739")
test(43, "115250", "115248")
test(44, "163031", "163029")
test(45, "221143", "221142,221157")
test(46, "410353", "410352")
test(47, "412649", "412647,412659")
test(48, "550391", "550389")
test(49, "699921", "699880,699922,699923")
test(50, "797161", "797160,1594323")
test(51, "1000000", "999999,1000002")


Recommended Posts

Offline-Echtzeit zum Schreiben eines Python-Implementierungsbeispiels für das E15-Problem
Offline-Echtzeit zum Schreiben eines E14 Python-Implementierungsbeispiels
Offline in Echtzeit, wie man ein Implementierungsbeispiel für E11 Ruby und Python schreibt
Antwort auf "Offline-Echtzeit, wie man ein E13-Problem schreibt"
So schreiben Sie offline in Echtzeit Lösen von E05-Problemen mit Python
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Das 15. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
Das 14. Referenzproblem beim Schreiben in Echtzeit in Python
Das 18. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
Antwort auf "Offline in Echtzeit, wie man ein F02-Problem schreibt"
Antwort auf "Offline-Echtzeit, wie man ein F01-Problem schreibt"
Das 16. Offline-Echtzeit-Schreibproblem wurde mit Python gelöst
17. In Python implementiertes Referenzproblem für das Offline-Schreiben in Echtzeit
Das 16. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
Das 19. Offline-Echtzeit-Schreiben eines Referenzproblems zur Lösung mit Python
Das 15. Offline-Problem beim Schreiben in Echtzeit wurde mit Python gelöst
20. Offline-Echtzeit So schreiben Sie Probleme in Python
Antwort auf "Offline in Echtzeit, wie man ein E12-Problem schreibt"
Teil 1 Ich habe ein Beispiel für die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Das 10. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
So schreiben Sie offline in Echtzeit Lösen von E04-Problemen mit Python
Das 11. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Wie man offline in Echtzeit schreibt Ich habe versucht, E12 mit Python zu lösen
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
13. Offline-Echtzeit So lösen Sie Schreibprobleme mit Python
Das zwölfte Offline-Echtzeit-Schreibreferenzproblem. Implementiert von Python
17. Offline-Echtzeit So lösen Sie Schreibprobleme mit Python
So schreiben Sie offline in Echtzeit Lösen von F01-Problemen mit Python
[Python] Zusammenfassung der Verwendung von Pandas
Antwort auf "Offline in Echtzeit, wie man ein F04-Problem schreibt"
Antwort auf "Offline in Echtzeit, wie man ein F05-Problem schreibt"
[Python2.7] Zusammenfassung der Verwendung von unittest
Zusammenfassung der Verwendung der Python-Liste
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Wie schreibe ich Ruby to_s in Python
Zusammenfassung des Schreibens von AWS Lambda
[Frage] Wie verwende ich plot_surface von Python?
[Python] Verwendung von zwei Arten von type ()
Zusammenfassung zum Importieren von Dateien in Python 3
Zusammenfassung der Verwendung von MNIST mit Python
So legen Sie Attribute mit Mock of Python fest
Das 18. Offline-Echtzeit-Schreibproblem in Python
So erhalten Sie Elemente vom Typ Wörterbuch von Python 2.7
Das 19. Offline-Echtzeit-Schreibproblem in Python
[Python] Zusammenfassung der Funktionen eval / exec + Schreiben einer Zeichenfolge mit Zeilenumbrüchen
Implementierungsbeispiel eines einfachen LISP-Verarbeitungssystems (Python-Version)
So ermitteln Sie die Anzahl der Stellen in Python
So installieren Sie Python
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
So schreiben Sie in Python die Verkettung von Zeichenfolgen in mehrere Zeilen
So installieren Sie Python
Verwendung von Python Kivy ~ ~ Grundlagen der Kv-Sprache ~
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
[Python] So teilen und modularisieren Sie Dateien (einfach, Beispiel)
Überprüfung des Atcoders ABC158 bis Frage E (Python)
Das 14. Referenzproblem beim Offline-Schreiben in Echtzeit mit Python
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird