So schreiben Sie offline in Echtzeit Lösen von E05-Problemen mit Python

Klicken Sie hier für Fragen und Antworten von anderen http://qiita.com/Nabetani/items/c516875b13a4d282affe

Ich beschloss, von hinten rückwärts zu rennen.

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from compiler.ast import flatten

a, b, c = 0, 1, 2
reversed_branches = (
    #   a      b      c
    ( (a, ), (a,b), (b,c) ),    # course 1
    ( (a, ), (b,c), (a,c) ),    # course 2
    ( (a,b), (b, ), (a,c) ),    # course 3
    ( (a,b), (b,c), (c, ) ),    # course 4
    ( (a,c), (b, ), (b,c) ),    # course 5
    ( (a,c), (a,b), (c, ) ),    # course 6
    ( (a, ), (   ), (c, ) ),    # course 7
    ( (   ), (b, ), (c, ) ),    # course 8
    ( (a, ), (b, ), (   ) ),    # course 9
    )

def back_course(course, tracks):
    backed_tracks = (reversed_branches[course][track] for track in tracks)
    return set(flatten(backed_tracks))

def solve(courses):
    reversed_courses = (int(course)-1 for course in courses[::-1])
    tracks = (a, b, c)
    for course in reversed_courses:
        tracks = back_course(course, tracks)
    return ''.join(chr(ord('a')+track) for track in sorted(tracks)) or '-'

def test():
    testdata = (
        (  0, "1728398", "bc" ),
        (  1, "789", "-" ),
        (  2, "274", "ac" ),
        (  3, "185", "abc" ),
        (  4, "396", "ab" ),
        (  5, "1278", "abc" ),
        (  6, "7659832", "a" ),
        (  7, "178", "bc" ),
        (  8, "189", "ab" ),
        (  9, "197", "a" ),
        ( 10, "278", "ac" ),
        ( 11, "289", "bc" ),
        ( 12, "297", "a" ),
        ( 13, "378", "ac" ),
        ( 14, "389", "b" ),
        ( 15, "397", "ab" ),
        ( 16, "478", "c" ),
        ( 17, "489", "bc" ),
        ( 18, "497", "ab" ),
        ( 19, "578", "bc" ),
        ( 20, "589", "b" ),
        ( 21, "597", "ac" ),
        ( 22, "678", "c" ),
        ( 23, "689", "ab" ),
        ( 24, "697", "ac" ),
        ( 25, "899", "b" ),
        ( 26, "7172", "ac" ),
        ( 27, "54787", "bc" ),
        ( 28, "83713", "bc" ),
        ( 29, "149978", "-" ),
        ( 30, "159735", "abc" ),
        ( 31, "1449467", "abc" ),
        ( 32, "9862916", "b" ),
        ( 33, "96112873", "ab" ),
        ( 34, "311536789", "-" ),
        ( 35, "281787212994", "abc" ),
        ( 36, "697535114542", "ac" ),
        )
    for no, data, correct in testdata:
        answer = solve(data)
        print '%s #%d "%s" "%s" -> "%s"' % (('NG!!','OK  ')[answer == correct], no, data, correct, answer)

if __name__ == '__main__':
    test()

Ausführungsergebnis


OK   #0 "1728398" "bc" -> "bc"
OK   #1 "789" "-" -> "-"
OK   #2 "274" "ac" -> "ac"
OK   #3 "185" "abc" -> "abc"
OK   #4 "396" "ab" -> "ab"
OK   #5 "1278" "abc" -> "abc"
OK   #6 "7659832" "a" -> "a"
OK   #7 "178" "bc" -> "bc"
OK   #8 "189" "ab" -> "ab"
OK   #9 "197" "a" -> "a"
OK   #10 "278" "ac" -> "ac"
OK   #11 "289" "bc" -> "bc"
OK   #12 "297" "a" -> "a"
OK   #13 "378" "ac" -> "ac"
OK   #14 "389" "b" -> "b"
OK   #15 "397" "ab" -> "ab"
OK   #16 "478" "c" -> "c"
OK   #17 "489" "bc" -> "bc"
OK   #18 "497" "ab" -> "ab"
OK   #19 "578" "bc" -> "bc"
OK   #20 "589" "b" -> "b"
OK   #21 "597" "ac" -> "ac"
OK   #22 "678" "c" -> "c"
OK   #23 "689" "ab" -> "ab"
OK   #24 "697" "ac" -> "ac"
OK   #25 "899" "b" -> "b"
OK   #26 "7172" "ac" -> "ac"
OK   #27 "54787" "bc" -> "bc"
OK   #28 "83713" "bc" -> "bc"
OK   #29 "149978" "-" -> "-"
OK   #30 "159735" "abc" -> "abc"
OK   #31 "1449467" "abc" -> "abc"
OK   #32 "9862916" "b" -> "b"
OK   #33 "96112873" "ab" -> "ab"
OK   #34 "311536789" "-" -> "-"
OK   #35 "281787212994" "abc" -> "abc"
OK   #36 "697535114542" "ac" -> "ac"

Recommended Posts

So schreiben Sie offline in Echtzeit Lösen von E05-Problemen mit Python
Offline-Echtzeit zum Schreiben eines E14 Python-Implementierungsbeispiels
Offline in Echtzeit, wie man ein Implementierungsbeispiel für E11 Ruby und Python schreibt
Offline-Echtzeit zum Schreiben eines Python-Implementierungsbeispiels für das E15-Problem
So schreiben Sie offline in Echtzeit Lösen von E04-Problemen mit Python
Antwort auf "Offline-Echtzeit, wie man ein E13-Problem schreibt"
So schreiben Sie offline in Echtzeit Lösen von F01-Problemen mit Python
Das 16. Offline-Echtzeit-Schreibproblem wurde mit Python gelöst
Wie man offline in Echtzeit schreibt Ich habe versucht, E11 mit Python zu lösen
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
Wie man offline in Echtzeit schreibt Ich habe versucht, E12 mit Python zu lösen
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
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"
17. In Python implementiertes Referenzproblem für das Offline-Schreiben in Echtzeit
Python: So verwenden Sie Async mit
[Python] Mit Python in eine CSV-Datei schreiben
Erste Schritte mit Python
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
So schreiben Sie Python-Dokumentkommentare (Docstrings)
Zu beachtende Punkte bei der Lösung von DP-Problemen mit Python
Antwort auf "Offline in Echtzeit, wie man ein E12-Problem schreibt"
Wie man einen Taschentest mit Python macht
So zeigen Sie Python-Japanisch mit Lolipop an
Wie man mit Python-Flüchen Japanisch eingibt
Wie schreibe ich Ruby to_s in Python
So installieren Sie Python3 mit Docker Centos
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Hochladen mit Heroku, Flask, Python, Git (4)
Lesen einer CSV-Datei mit Python 2/3
Wie man Spaß am Programmieren mit Minecraft hat (Ruby, Python)
[REAPER] Wie man Reascript mit Python spielt
So führen Sie eine Mehrkern-Parallelverarbeitung mit Python durch
Strategie zur Monetarisierung mit Python Java
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
[Python] Wie man Excel-Dateien mit Pandas liest
So beschneiden Sie ein Bild mit Python + OpenCV
[Mit Plotly auf die Karte schreiben] Dynamische Visualisierung mit Plotly [Python]
So legen Sie Attribute mit Mock of Python fest
So messen Sie die Ausführungszeit mit Python Teil 1
Wie man tkinter mit Python in Pyenv benutzt
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
[Python] Umgang mit japanischen Zeichen mit openCV
Ich möchte mit Python in eine Datei schreiben
[Python] Vergleichen von Datum und Uhrzeit mit der hinzugefügten Zeitzone
So messen Sie die Ausführungszeit mit Python Part 2
Einführung in die mathematische Optimierung von Python Lösen von Mathematikproblemen der Mittelstufe mit Zellstoff
So installieren Sie Python
So installieren Sie Python
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So fügen Sie HDA Hilfe hinzu (mit Python-Skriptbonus)
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
So schreiben Sie in Python die Verkettung von Zeichenfolgen in mehrere Zeilen
So kratzen Sie Bilddaten von Flickr mit Python