Python-Handspiel (Beginnen wir mit AtCoder?)

Was ist dieser Artikel?

Ich war an AtCoder interessiert und habe versucht, den Code direkt in den Browser einzugeben. Also wollte ich es natürlich lokal verschieben und überprüfen, bevor ich es hochlade. Dann, ein halbes Jahr später, möchte ich mir sagen: "Was, ich wusste das nicht?", Also möchte ich die Quelle behalten. (Nun, vor Ort.) Lassen Sie uns dann übrigens ein Beispielproblem als Teil des Codes haben, es testen und warten, bis es in Ordnung ist. Also habe ich einen Betriebsmodus hinzugefügt und eine Framework (?) - Like-Funktion erstellt, die einfach zu bewerten ist.

Geschichte

Ich habe gehört, dass es ein Rätsel gibt, das interessant zu sein scheint ... Nein, ich kannte die Existenz selbst, aber der Inhalt war zu enthusiastisch, und ich dachte, es wäre ein bisschen so, also gab ich es auf. Als ich jedoch hörte, dass ich an AtCoder on Scratch teilnehmen könnte, sagte ich: "Nun, ist es kein Experte?" .. ..

Dann dachte ich, ich könnte zum ersten Mal teilnehmen. Falsch. Ich dachte, ich würde anfangen.

Spezifikationsübersicht? Anforderungen?

Erstellen Sie eine .py-Datei, die unabhängig gestartet werden kann Normalbetrieb (zur Einreichung) ohne Argumente Geben Sie 1, 2 usw. als Argument ein und geben Sie das Ergebnis der Testmusterausführung und OK / NG aus, die in der Problemstellung angegeben sind.

Code

Beispiel 1: A - Willkommen bei AtCoder

■A - Welcome to AtCoder https://atcoder.jp/contests/practice/tasks/practice_1

 practice_1.py

# Antworten
def practice_1(lines):
    a = int(lines[0])
    b, c = map(int, lines[1].split(' '))
    s = lines[2]
    return [str(a+b+c) + ' ' + s]


# Holen Sie sich Argument
def get_input_lines(lines_count):
    lines = list()
    for _ in range(lines_count):
        lines.append(input())
    return lines


# Testdaten
def get_testdata(pattern):
    if pattern == 1:
        lines_input = ['1', '2 3', 'test']
        lines_export = ['6 test']
    elif pattern == 2:
        lines_input = ['72', '128 256', 'myonmyon']
        lines_export = ['456 myonmyon']
    return lines_input, lines_export


# Betriebsartenermittlung
def get_mode():
    import sys
    args = sys.argv
    if len(args) == 1:
        mode = 0
    else:
        mode = int(args[1])
    return mode


# Hauptverarbeitung
def main():
    mode = get_mode()
    if mode == 0:
        lines_input = get_input_lines(3)
    else:
        lines_input, lines_export = get_testdata(mode)

    lines_result = practice_1(lines_input)

    for line_result in lines_result:
        print(line_result)

    if mode > 0:
        print(f'lines_input=[{lines_input}]')
        print(f'lines_export=[{lines_export}]')
        print(f'lines_result=[{lines_result}]')
        if lines_result == lines_export:
            print('OK')
        else:
            print('NG')


# Prozess starten
if __name__ == '__main__':
    main()

(Ausgabeergebnis)

(base) ...>python practice_1.py 1
6 test
lines_input=[['1', '2 3', 'test']]
lines_export=[['6 test']]
lines_result=[['6 test']]
OK

(base) ...>python practice_1.py 2
456 myonmyon
lines_input=[['72', '128 256', 'myonmyon']]
lines_export=[['456 myonmyon']]
lines_result=[['456 myonmyon']]
OK

(base) ...>python practice_1.py
3
5 7
abc
15 abc



Beispiel 2: ABC173: A - Zahlung

https://atcoder.jp/contests/abc173/tasks/abc173_a

 abc173_a.py

# Antworten
def abc173_a(lines):
    N = int(lines[0])
    amari = N % 1000
    if amari == 0:
        answer = 0
    else:
        answer = 1000 - amari
    return [answer]


# Holen Sie sich Argument
def get_input_lines(lines_count):
    lines = list()
    for _ in range(lines_count):
        lines.append(input())
    return lines


# Testdaten
def get_testdata(pattern):
    if pattern == 1:
        lines_input = ['1900']
        lines_export = [100]
    elif pattern == 2:
        lines_input = ['3000']
        lines_export = [0]
    return lines_input, lines_export


# Betriebsartenermittlung
def get_mode():
    import sys
    args = sys.argv
    if len(args) == 1:
        mode = 0
    else:
        mode = int(args[1])
    return mode


# Hauptverarbeitung
def main():
    mode = get_mode()
    if mode == 0:
        lines_input = get_input_lines(1)
    else:
        lines_input, lines_export = get_testdata(mode)

    lines_result = abc173_a(lines_input)

    for line_result in lines_result:
        print(line_result)

    if mode > 0:
        print(f'lines_input=[{lines_input}]')
        print(f'lines_export=[{lines_export}]')
        print(f'lines_result=[{lines_result}]')
        if lines_result == lines_export:
            print('OK')
        else:
            print('NG')


# Prozess starten
if __name__ == '__main__':
    main()


(Ausgabeergebnis)

(base) >python abc173_a.py 1
100
lines_input=[['1900']]
lines_export=[[100]]
lines_result=[[100]]
OK

(base) >python abc173_a.py 2
0
lines_input=[['3000']]
lines_export=[[0]]
lines_result=[[0]]
OK

(base) >python abc173_a.py
2380
620

(

Beispiel 3: ABC173: B - Zusammenfassung des Richterstatus

https://atcoder.jp/contests/abc173/tasks/abc173_b

 abc173_b.py

# Antworten
def abc173_b(lines):
    labels = ['AC', 'WA', 'TLE', 'RE']
    ns = [0, 0, 0, 0]
    for line in range(1, len(lines)):
        for i, label in enumerate(labels):
            if label == lines[line]:
                ns[i] += 1
    answers = list()
    for i, label in enumerate(labels):
        answers.append(label + ' x ' + str(ns[i]))
    return answers


# Holen Sie sich Argument
def get_input_lines_1stline_as_n_lines():
    lines = list()
    lines.append(input())
    for _ in range(int(lines[0])):
        lines.append(input())
    return lines


# Testdaten
def get_testdata(pattern):
    if pattern == 1:
        lines_input = ['6', 'AC', 'TLE', 'AC', 'AC', 'WA', 'TLE']
        lines_export = ['AC x 3', 'WA x 1', 'TLE x 2', 'RE x 0']
    elif pattern == 2:
        lines_input = ['10', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC']
        lines_export = ['AC x 10', 'WA x 0', 'TLE x 0', 'RE x 0']
    return lines_input, lines_export


# Betriebsartenermittlung
def get_mode():
    import sys
    args = sys.argv
    if len(args) == 1:
        mode = 0
    else:
        mode = int(args[1])
    return mode


# Hauptverarbeitung
def main():
    mode = get_mode()
    if mode == 0:
        lines_input = get_input_lines_1stline_as_n_lines()
    else:
        lines_input, lines_export = get_testdata(mode)

    lines_result = abc173_b(lines_input)

    for line_result in lines_result:
        print(line_result)

    if mode > 0:
        print(f'lines_input=[{lines_input}]')
        print(f'lines_export=[{lines_export}]')
        print(f'lines_result=[{lines_result}]')
        if lines_result == lines_export:
            print('OK')
        else:
            print('NG')


# Prozess starten
if __name__ == '__main__':
    main()

(Ausgabeergebnis)

(base) >python abc173_b.py 1
AC x 3
WA x 1
TLE x 2
RE x 0
lines_input=[['6', 'AC', 'TLE', 'AC', 'AC', 'WA', 'TLE']]
lines_export=[['AC x 3', 'WA x 1', 'TLE x 2', 'RE x 0']]
lines_result=[['AC x 3', 'WA x 1', 'TLE x 2', 'RE x 0']]
OK

(base) >python abc173_b.py 2
AC x 10
WA x 0
TLE x 0
RE x 0
lines_input=[['10', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC', 'AC']]
lines_export=[['AC x 10', 'WA x 0', 'TLE x 0', 'RE x 0']]
lines_result=[['AC x 10', 'WA x 0', 'TLE x 0', 'RE x 0']]
OK

(base) >python abc173_b.py
5
AC
AC
WA
TLE
TLE
AC x 2
WA x 1
TLE x 2
RE x 0

Impressionen

Nun, vorerst ist es das. Mit der Einstellung zu starten, anstatt es am besten zu machen. Wenn ich weitermache, werde ich vielleicht viele Änderungen vornehmen.

Willkommen ist vorerst zu AC geworden, so wie es ist. Lassen Sie uns dies ab heute aufstellen. ABC173 las von A nach F, aber D kam nicht sehr gut heraus. F war verwirrend und hatte keine Lust zu lesen. Als ich den Code für E schrieb, wurde er nüchtern und langweilig und unterbrochen. Nun, ich frage mich, ob es in Ordnung ist, sich nach D daran zu gewöhnen. C war auch eine Menge Ärger.

Ich frage mich, ob mein Stil durch logisches Zusammenstellen und Organisieren meiner Gedanken besser wird. Ich denke, ich möchte die Probleme angehen und mir das Kommentarvideo ein wenig ansehen ... Wenn Sie fortfahren. .. ..

Recommended Posts

Python-Handspiel (Beginnen wir mit AtCoder?)
[Blender x Python] Beginnen wir mit Blender Python !!
Beginnen Sie mit Python! ~ ② Grammatik ~
Beginnen Sie mit Python! ~ ① Umweltbau ~
Link, um mit Python zu beginnen
Lass uns mit Python mit Python spielen [Anfänger]
Erste Schritte mit Python
Beginnen Sie mit Python mit Blender
Spielen Sie mit 2016-Python
Beginnen wir mit TopCoder in Python (Version 2020)
Wie Python-Anfänger mit Progete beginnen
Kommen wir zu Python # 0 (Umgebungskonstruktion)
Django 1.11 wurde mit Python3.6 gestartet
Löse AtCoder 167 mit Python
1.1 Erste Schritte mit Python
Erste Schritte mit Python
[Cloud102] # 1 Beginnen wir mit Python (Teil 2 Jupyter Notebook Construction AWS Edition)
Beginnen Sie mit MicroPython
Holen Sie sich ein Date mit Python
Beginnen Sie mit Mezzanine
Erste Schritte mit Python
Zubu Amateur will Python starten
[Cloud102] # 1 Erste Schritte mit Python (Teil 1 Python Erste Schritte)
Python Handspiel (Division)
[Cloud102] # 1 Beginnen wir mit Python (Teil 3 Jupyter Notebook-Konstruktion GCP Cloud Shell Edition)
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
[Lass uns mit Python spielen] Ein Haushaltsbuch erstellen
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
[Piyopiyokai # 1] Lass uns mit Lambda spielen: Holen Sie sich einen Twitter-Account
Python-Handspiel (Spaltennamen aus CSV-Datei abrufen)
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen eines Python-Skripts
Holen Sie sich den Ländercode mit Python
Python-Handspiel (zweidimensionale Liste)
Spielen wir mit der 4. Dimension der 4. Dimension
Einführung in Python-Funktionen
Spielen wir mit Amedas Daten - Teil 1
Löse AtCoder ABC166 mit Python
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Hellblau mit AtCoder @Python
Holen Sie sich Twitter-Timeline mit Python
Beginnen Sie mit influxDB + Grafana
Holen Sie sich Youtube-Daten mit Python
Erste Schritte mit Python Django (1)
Fangen Sie mit Django an! ~ Tutorial ④ ~
Spielen wir mit Amedas Daten - Teil 4
Erste Schritte mit Python Django (4)
Erste Schritte mit Python Django (3)
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
[Python] Spielen Sie mit Discords Webhook.
Schreiben wir Python mitinema4d.
Holen Sie sich die Thread-ID mit Python
Einführung in Python Django (6)
Spielen wir mit Amedas Daten - Teil 3
Holen Sie sich Lager mit Python
Spielen wir mit Amedas Daten - Teil 2
Lassen Sie uns Git-Cat mit Python bauen
Holen Sie sich das Home-Verzeichnis mit Python