Dank der jüngsten Herausforderung von MD XF können wir Passwörter jetzt in vielen verschiedenen Sprachen lesen! Das Problem ist, dass wir unsere Anwendungen jetzt auf mobile Geräte portieren müssen und die Kennworteingabe ein wenig anders erfolgt.
Herausforderung
- Lesen Sie eine Zeichenfolge von der Tastatur.
k
Zeigen Sie jedes Mal, wenn ein Zeichen eingegeben wird, es für ein kurzes Zeitintervall an.- Nachdem das Zeitintervall abgelaufen ist ODER der Benutzer ein anderes Zeichen eingegeben hat, ersetzen Sie es
k
durch ein Zeichenc
.
Regeln
c
muss konstant sein; Es muss das gleiche Zeichen sein.c
kann ein beliebiges sichtbares Zeichen sein (dh es kann sich nicht um eine neue Zeile, ein Leerzeichen, ein Tabulator oder ein nicht druckbares Zeichen handeln).c
kann nicht auf einer Eingabe basierenk
;c
muss definiert / konstant sein, bevor der erstek
gelesen wird.c
muss jedes Mal gleich sein, wenn das Programm ausgeführt wird.c
kann einer der Werte sein, die wiek
zufällig angegeben werden, solange alle anderen Regeln eingehalten werden.- Sie müssen
k
in Echtzeit drucken . Sobald der Benutzer ein neues eingibtk
, müssen Sie es sofort anzeigen. k
sollte für den Endbenutzer sichtbar sein, bevor er zu geändert wirdc
; Das Zeitintervall darf 0,5 Sekunden nicht unterschreiten.k
solltec
innerhalb einer angemessenen Frist ersetzt werden; Das Zeitintervall darf 5 Sekunden nicht überschreiten.- Sobald ein neues Zeichen eingegeben, ob das Zeitintervall abgelaufen ist, sollten Sie ersetzen
k
mitc
und die eingegebenen Schlüssel als neues verwendenk
sofort. - Es ist akzeptabel, den Bildschirm jedes Mal zu löschen und neu zu zeichnen, wenn Sie einen Charakter ändern müssen.
- Sie können alle sinnvollen Ein- und Ausgabemethoden verwenden, solange alle anderen Regeln eingehalten werden.
- Sie können davon ausgehen, dass die Anzahl der eingegebenen Zeichen niemals länger als die Breite des Terminals / Grafikfensters ist.
- Wenn Sie ein Terminal verwenden, sollte Ihr Programm nach Eingabe einer neuen Zeile oder Erreichen der EOF beendet werden.
- Ihr Programm sollte in mobilen und anderen Umgebungen wie hier beschrieben funktionieren.
- Ihr Programm geht möglicherweise davon aus, dass die Eingabe nur druckbare Zeichen (Buchstaben, Zahlen, Symbole) und möglicherweise einen abschließenden Zeilenumbruch (keine Rücktaste, Pfeiltasten, Löschen usw.) enthält.
- Ihr Programm wird möglicherweise beendet, wenn Sie Strg + C drücken.
- Sie können Ihr Programm beenden, indem Sie ein Fenster schließen, wenn Ihr Programm eines startet.
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache!
Beispiel
Hier ist ein Beispiel, wie es aussehen sollte. Beachten Sie, dass dies auf einer mobilen Plattform aufgezeichnet wird, aber auch auf einer Desktop-Plattform funktionieren sollte.
Antworten:
HTML + JavaScript, 20 + 105 = 125 Byte
Die Verzögerung zwischen der Eingabe
k
und dem Schreiben*
beträgt eine Sekunde.JavaScript
oninput
, formatiertTestschnipsel
Die abschließende Klammer (
>
) wurde hinzugefügt, um die Kompatibilität zu verbessern.quelle
Python 3 ,
186224 BytesFunktioniert nur in Windows.
Ältere Version (186 Byte): Der Ruhezustand war unabhängig von der Geschwindigkeit, mit der die Taste gedrückt wurde, obligatorisch.
quelle
As soon as a new character is entered, whether or not the time interval has expired, you should replace k with c and use the entered key as the new k immediately.
kann ich es nicht testen, da ich kein Windows-Betriebssystem habe. Lassen Sie es mich wissen! Sie finden diese verwandte Herausforderung möglicherweise hilfreich als ReferenzPython 2 , 133 Bytes
Basierend auf @officialaimm Antwort .
quelle
\r
im Druck