Das 14. Referenzproblem beim Offline-Schreiben in Echtzeit mit Python

Offline in Echtzeit schreiben 14. (28. September) http://atnd.org/events/43076 Referenzproblem "Überqueren des Umfangs" http://nabetani.sakura.ne.jp/hena/ord14crosscircle/ Implementierungsbeispiel.

Mit unbekannter Python.

Beispiele für Antworten in anderen Sprachen http://qiita.com/Nabetani/items/66806c9dc14a96f2fd42 Sie können folgen aus.

damit.

#coding:utf-8
#tested with Python 2.7.5 and Python 3.3.2

import re

def solve( src ):
    return str(len(
            [ 0
                for a in range( 0, len(src) )
                for b in range( 0, a )              
                for c in range( 0, b ) if src[a]==src[c] 
                for d in range( 0, c ) if src[b]==src[d] ] ))

def test( samples ) :
    for line in samples.splitlines():
        a=re.split( "\s+", line ) # num, input, expected
        if len(a) <3:
            continue
        actual = solve( a[1] )
        ok=actual==a[2]
        print( [ "ok" if ok else "***NG***", a[1:3], actual ] )

test( """
0   aabbca1bcb  14  
1   111ZZZ  0   
2   v   0   
""")

Wie üblich werden die meisten Testdaten weggelassen.

Eine schrecklich naive Umsetzung. Das Schlimmste ist O (N ** 4), aber das reicht für dieses Problem.

Wähle 4 Punkte. Wenn der erste und der dritte den gleichen Namen haben und der zweite und der letzte den gleichen Namen haben, gibt es eine Kreuzung. Probieren Sie sie alle aus und Sie sind fertig.

Ich denke nicht, dass es der Fall sein sollte, die Listeneinschlussnotation zu verwenden, aber ich möchte sie verwenden, also verwende ich sie ohne zu zögern. Ich habe mich entschieden, es zu verwenden, aber ich war nicht an den Inhalten der Liste interessiert, also habe ich beschlossen, es mit 0 zu füllen, was mich ein wenig seltsam machte (ich fühle mich danach, aber es ist nicht Pythonista, also frage ich mich, ob es wirklich seltsam ist. Ich bin mir nicht sicher).

Wenn Sie die Reihenfolge ändern, ist der typische Fall schneller, aber der schlimmste Fall ist nicht schneller, also habe ich ihn so belassen, wie er ist.

Recommended Posts

Das 14. Referenzproblem beim Offline-Schreiben in Echtzeit mit Python
Das 18. Offline-Echtzeit-Schreibproblem in Python
Das 19. Offline-Echtzeit-Schreibproblem in Python
Das 10. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
Das 11. Referenzproblem beim Schreiben in Echtzeit. Implementierungsbeispiel von Python.
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 zwölfte Offline-Echtzeit-Schreibreferenzproblem. Implementiert von Python
Das 14. Referenzproblem beim Schreiben in Echtzeit in Python
Das 18. Offline-Echtzeit-Schreiben eines Referenzproblems in Python
Das 16. Offline-Echtzeit-Schreibproblem wurde mit Python gelöst
17. In Python implementiertes Referenzproblem für das Offline-Schreiben in Echtzeit
Das 15. Offline-Problem beim Schreiben in Echtzeit wurde mit Python gelöst
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
13. Offline-Echtzeit So lösen Sie Schreibprobleme mit Python
Antwort auf "Offline in Echtzeit, wie man ein F04-Problem schreibt"
Antwort auf "Offline in Echtzeit, wie man ein F05-Problem schreibt"
Antwort auf "Offline in Echtzeit, wie man ein E12-Problem schreibt"
Lösen Sie das Python-Rucksackproblem mit dem Greedy-Algorithmus
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Rufen Sie die API mit python3 auf.
So schreiben Sie offline in Echtzeit Lösen von E05-Problemen mit Python
Ich habe versucht, das Problem von F02 zu lösen, wie man mit Python offline in Echtzeit schreibt
Extrahieren Sie die xz-Datei mit Python
[AtCoder-Kommentar] Gewinnen Sie mit Python das ABC165 C-Problem "Many Requirements"!
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
Offline-Echtzeit zum Schreiben eines Python-Implementierungsbeispiels für das E15-Problem
Finden Sie die Bearbeitungsentfernung (Levenshtein-Entfernung) mit Python
Klicken Sie mit Python auf die Etherpad-Lite-API
Installieren Sie das Python-Plug-In mit Netbeans 8.0.2
Lesen und Schreiben von NetCDF mit Python
Ich mochte den Tweet mit Python. ..
Lösen Sie das Python-Rucksackproblem mit der Branch-and-Bound-Methode
Beherrsche den Typ mit Python [Python 3.9 kompatibel]
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Lesen und Schreiben von CSV mit Python
Lösen Sie Teilsummenprobleme mit der vollständigen Suche in Python
Machen Sie die Python-Konsole mit UNKO bedeckt
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Hinter dem Flyer: Docker mit Python verwenden
Überprüfen Sie die Existenz der Datei mit Python
[Python] Ruft den Variablennamen mit str ab
[Python] Runden Sie nur mit dem Operator ab
Zeigen Sie Python 3 im Browser mit MAMP an
Lesen wir die RINEX-Datei mit Python ①
Arbeiten mit OpenStack mit dem Python SDK
Lesen und Schreiben von JSON-Dateien mit Python
Laden Sie mit Python Dateien im Web herunter
Python: Ich habe das Problem des Handlungsreisenden ausprobiert