Lesen Sie ein Passwort

20

Ihre Herausforderung besteht darin, ein "Passwort" von der Tastatur / Standardeingabe zu lesen.

Herausforderung :

  • Lesen Sie eine Zeichenfolge sunsichtbar.
  • sDrucken Sie für jedes der Zeichen in ein Zeichen c.
  • In Echtzeit.

Regeln:

  • Sie müssen cin Echtzeit drucken . Sobald der Benutzer ein Zeichen eingibt, müssen Sie anzeigen c.
  • c muss konstant sein, dh es muss das gleiche Zeichen sein.
  • ckann ein beliebiges sichtbares Zeichen sein (dh es kann sich nicht um eine neue Zeile, ein Leerzeichen, ein Tabulator oder ein nicht druckbares Zeichen handeln).
  • cKann nicht basieren s, dh cmuss definiert / konstant sein, bevor sgelesen wird.
  • c muss jedes Mal gleich sein, wenn das Programm ausgeführt wird.
  • ckann einer der szufälligen Charaktere sein , solange alle anderen Regeln befolgt werden.
  • Keines der Zeichen von sdarf auf dem Bildschirm erscheinen, caußer (siehe vorherige Regel).
  • Sie können alle sinnvollen Ein- und Ausgabemethoden verwenden, solange alle anderen Regeln eingehalten werden.
  • Sie können davon ausgehen, dass die Länge von sniemals länger als die Breite des Terminals / Grafikfensters ist.
  • Wenn Sie ein Terminal verwenden, sollte Ihr Programm nach Eingabe eines Zeilenumbruchs oder einer EOF beendet werden.

Beispiel :

Wenn swar password01und cwar *, würde die Ausgabe ungefähr so ​​aussehen:

Passwort

Gewinner :

Die kürzeste Einsendung in jeder Sprache gewinnt.

MD XF
quelle
Ist Python mit tkinterfür unser benutzerdefiniertes Eingabefeld zulässig (wie das in HTML), sodass das Programm nicht beendet wird, wenn die Eingabetaste gedrückt wird, sondern wenn Sie das EntryFenster schließen (X unter Windows und cmd+ Wunter Mac)?
Mr. Xcoder
@ Mr.Xcoder Ja, das ist gültig.
MD XF
Können wir mit Strg + J einen wörtlichen Zeilenumbruch im Terminal darstellen? Alternativ können wir Strg + Z anstelle der Eingabetaste verwenden?
Conor O'Brien
@ ConorO'Brien Klärt, wie die Eingabe im Terminal enden soll.
MD XF
2
Was soll passieren, wenn der Benutzer die Rücktaste drückt?
zdimension

Antworten:

6

str , 5 bytes

n=?,1

Aufgrund eines Fehlers sind dies 5 Bytes. Es sollte nur 1 Byte sein:

1

Ausführung von <code> n = ?, 1 </ code>

Conor O'Brien
quelle
Ich habe die cmderAntwort auf jeden Fall aufgrund Ihres Ctrl+ZKommentars gesehen: P
MD XF
10/10 richtiges Werkzeug für den Job
Erik der Outgolfer
20

HTML, 20 Bytes

<input type=password


Alternative: HTML + JavaScript, 51 Bytes

Obwohl das OP bestätigt hat, dass dies gültig ist, ist hier eine Lösung mit JS für Puristen!

<input id=i oninput=i.value=i.value.replace(/./g,8)

Zottelig
quelle
4
FGITW, irgendjemand? : P (nahm ihn buchstäblich zehn Sekunden)
MD XF
oninput=_=>i.value=i.value.replace(/./g,"*")Speichert ein Byte.
Arjun
Da ckann alles sein, können Sie zwei weitere Bytes mit speichernoninput=_=>i.value=i.value.replace(/./g,1)
Arjun
Ich mache mir Sorgen, wenn (wann) jemand meine reine HTML-Lösung für ungültig erklärt, @Arjun;) Ich habe nur die JS schnell zusammengeschmissen, um ein paar Leute zu beruhigen!
Shaggy
6
Wo ist die Erklärung, ich verstehe nicht.
Magic Octopus Urn
11

Vim, 36 Bytes:

:im <C-v><CR> <C-v><esc>ZQ<CR>:au I<tab><tab> * let v:char=0<CR>i

Diese verwendet vim-Taste Notation , so <C-v>ist Ctrl-V , <CR>ist ein, <esc>ist die Escape - Taste, und <tab>ist die Tab - Taste.

c ist '0'.

Hier ist ein Hexdump, um zu beweisen, dass die Byteanzahl korrekt ist:

00000000: 3a69 6d20 160a 2016 1b5a 510a 3a61 7520  :im .. ..ZQ.:au 
00000010: 4909 0920 2a20 6c65 7420 763a 6368 6172  I.. * let v:char
00000020: 3d30 0a69                                =0.i

Dies funktioniert durch Ausführen der folgenden zwei ex-Befehle:

:imap <CR> <esc>ZQ
:autocmd InsertCharPre * let v:char=0

Der erste bedeutet

:imap               " Anytime the following is pressed in insert mode:
      <CR>          "   (the 'enter' key)
           <esc>ZQ  " Then act as if the user instead pressed '<esc>ZQ' (close the buffer)

Und der zweite bedeutet

:autocmd                                " Automatically as vim runs:
         InsertCharPre                  "   Any time the user is about to insert a char
                       *                "   In any type of file
                         let v:char=0   "     Then instead insert a '0' character
DJMcMayhem
quelle
Ich denke, es gibt keine Möglichkeit für mich, mit meiner aktuellen Methode dahin zu kommen, ohne zumindest Leerzeichen zu ignorieren. Schöne Antwort!
nmjcman101
o_O Das ist ordentlich ...
Mr. Xcoder
9

Ruby with Shoes, 29 Zeichen

Shoes.app{edit_line secret:1}

Beispielausgabe:

Passworteingabe in Ruby with Shoes

Mann bei der Arbeit
quelle
25
Rubin mit Schuhen? Schienen waren nicht genug?
Magic Octopus Urn
6

Aceto , 8 7 6 Bytes

,!`XpO

Erläuterung:

Lies ein Zeichen ( ,), negiere es ( !) und beende es unter bestimmten Bedingungen. Drucken Sie die Null oben auf den Stapel ( p) und kehren Sie zum Anfang zurück.

Laufen Sie mit -F, um den Effekt sofort zu sehen (weil das Spülen)

Meine erste Lösung basierte auf dem Sandbox-Post, wobei Leerzeichen als Ersatzzeichen zulässig waren und kein Verlassen bei der Eingabe erforderlich war (4 Byte):

,'p>
L3viathan
quelle
5

C auf POSIX, 128 117 113 96 Bytes

-11 danke an Quentin beim Durchsuchen termios.h
-4 danke an Quentin beim Hinweisen auf meine dummen Fehler
-17 weil Quentin ein verdammter Zauberer ist.

c,t[15];f(){for(tcgetattr(1,t),t[3]&=~10,tcsetattr(1,0,t);(c=getchar())^10&&c^4;)printf(".");}

Dadurch wird STDIN in den unformatierten / unsichtbaren Modus versetzt, sodass es in Echtzeit Tastendrücke erhalten kann. Das dauert 77 Bytes und ich bin sicher, dass ich ein bisschen Golf spielen kann. Beachten Sie, dass dadurch STDIN beim Beenden nicht zurückgesetzt wird, sodass Ihr Terminal beschädigt wird, wenn Sie dies nicht manuell tun.

So können Sie STDIN zurücksetzen:

void stdin_reset(void)
{
    struct termios t;
    get_stdin(&t);
    t.c_lflag |= ECHO;
    t.c_lflag |= ICANON;
    set_stdin(&t);
}

Ausgabe wie im GIF gezeigt :-)

MD XF
quelle
1
Stöbere in meinem termios.h, ECHOist 0000010und ICANONist 0000002. Das heißt, das ~(ECHO|ICANON)ist nur ~10:)
Quentin
@Quentin Bearbeitet! Prost: D
MD XF
1
Jeweils Auch !=kann ersetzt werden ^, und '\n'mit 10(unter der Annahme , UTF-8);)
Quentin
2
Wenn UB voll ist, können wir den tSpeicher durch ein Array von ganzen Zahlen ersetzen . Dann c_lcflagsendet es bei t[3], und wir brauchen weder den Namen noch den Typ noch die #includeinsgesamt 94 Bytes: c,t[15];f(){for(tcgetattr(1,t),t[3]&=~10,tcsetattr(1,0,t);(c=getchar())^10&&c^4;)printf(".");}- Aber vielleicht soll ich es lieber als Antwort posten, als Spaß mit Ihnen zu haben :)
Quentin,
1
@Quentin Oh ... meine Güte. Du bist ein Zauberer. Und ich dachte, ich wäre gut in C ... wenn Sie es als Ihre eigene Antwort posten möchten, fühlen Sie sich frei und ich werde meine Änderungen rückgängig machen, ansonsten lasse ich es in meiner bearbeitet.
MD XF
4

x86-Computercode unter MS-DOS - 14 Byte

Wie üblich ist dies eine vollständige COM-Datei, die auf DosBox und den meisten DOS-Varianten ausgeführt werden kann.

00000000  b4 08 b2 2a cd 21 80 f4  0a 3c 0d 75 f7 c3        |...*.!...<.u..|
0000000e

Kommentierte Versammlung:

    org 100h

section .text

start:
    mov ah,8h       ; ah starts at 08h (read console, no echo)
    mov dl,'*'      ; write asterisks (we could have left whatever
                    ; startup value we have here, but given that dx=cs,
                    ; we have no guarantee to get a non-zero non-space
                    ; value)
lop:
    ; this loop runs twice per character read: the first time with
    ; ah = 08h (read console, no echo syscall), the second time with
    ; ah = 02h (write console); a xor is used to switch from one
    ; mode to the other
    int 21h         ; perform syscall
    xor ah,0ah      ; switch syscall 08h <=> 02h
    cmp al,0dh      ; check if we read a newline (if we wrote stuff
                    ; we are just checking the last value read, so
                    ; no harm done; at the first iteration al starts
                    ; at 0, so no risk here)
    jne lop         ; loop if it wasn't a newline
quit:
    ret             ; quit
Matteo Italia
quelle
2
...auf keinen Fall. Das ist erstaunlich.
MD XF
Danke, aber ich habe das Gefühl, dass es noch etwas zu kürzen gibt. das xorsind woppin '3 bytes und wären genau so groß, wenn ich es insgesamt funktionieren lassen würde ax; Ich habe versucht xor ax,0a0dh/ test al,al, aber es ist genauso groß, weil dumm testist zwei Bytes, grrr ...
Matteo Italia
3

Python 2 , 50 Bytes

from msvcrt import*
while'\r'!=getch():print'\b*',

Funktioniert nur unter Windows

Stange
quelle
1
Leider funktioniert es nur unter Windows: ((
Mr. Xcoder
3

AHK , 17 Bytes

InputBox,o,,,HIDE

Built-Ins sind nicht interessant.

Ingenieur Toast
quelle
3

Java 5-8, 125 122 131 124 Bytes

class X{public static void main(String[]a){new java.awt.Frame(){{add(new javax.swing.JPasswordField());setVisible(1>0);}};}}

Ungolfed:

class X{
    public static void main(String[]a){
        new java.awt.Frame(){
            {
                add(new javax.swing.JPasswordField());
                setVisible(1>0);
            }
        };
    }
}

Ergebnis:

Bildbeschreibung hier eingeben

Kredit:

-3 @MD XF (wies auf meinen blöden Fehler mit hin String[]args)

-7 @KritixiLithos (Darauf public classkann nur hingewiesen werden class)

Magische Kraken-Urne
quelle
1
Ist das String[]argsnötig?
MD XF
@MDXF Wenn ich die Antwort für Java 8 geben möchte, gibt es VIELE Dinge, die ich tun könnte. Ich mache dies jedoch zu einer generischen Java-Antwort. Allerdings kann ich das ja machen String[]a.
Magic Octopus Urn
Sie haben vergessen, die Antwort zu aktualisieren. Auch nicht zu 1>0bewerten 1?
MD XF
@MDXF in Java (< 8)- 1>0wertet aus true, was anders ist. Ich werde die gleiche Antwort in Groovy posten.
Magic Octopus Urn
@StephenS Dies ist eine generische Java-Antwort, keine Java 8-Antwort.
Magic Octopus Urn
3

Mathematica 34 Bytes

 InputString["",FieldMasked->True];

Nach der Eingabe jedes Zeichens wird ein einzelnes Sternchen angezeigt. Die leeren Anführungszeichen stehen für den Titel, der im Popup-Eingabefenster angezeigt wird.

Die ;verhindert , dass das Passwort gedruckt wird.

Bildbeschreibung hier eingeben

DavidC
quelle
Absichtlicher führender Raum?
MD XF
2

Vim, 58 50 52 50 Bytes

Wurde hinzugefügt, um sicherzustellen, dass Leerzeichen ordnungsgemäß behandelt werden.

Vielen Dank an @DJMcMayhem für jede Menge Hilfe und Ideen

i:im 32 *Y94pVGg
kWcW<Space>
:im 
 ZQ
dG@"qi

In der folgenden typischen Vim-Schlüsselsyntax. Die mit einem gekennzeichneten Zeichen ^sind Ctrl+<char>also ^Q=Ctrl+q

i:im ^V^V32 *^[Y94pVGg^A
kWcW<Space>^[
:im ^V
 ZQ
dG@"qi

Es gibt keine TIO-Verknüpfung, da Sie direkt in Vim eingeben müssen (im Gegensatz zur normalen Vorabeingabe). Um den Code auszuführen, müssen Sie ihn in Vim eingeben. Anschließend können Sie Ihr Kennwort eingeben und die Eingabetaste drücken. Mit dem Passwort wird nichts gemacht. Es wird nicht einmal wissen, was es war. Sobald Sie auf "Enter" klicken, wird das Vim-Fenster geöffnet:q!

Dies funktioniert, indem alle druckbaren ASCII-Zeichen *im Einfügemodus und Zuordnungen <CR>zu zugeordnet werden<ESC>:q!<CR>

nmjcman101
quelle
Vielleicht klarstellen, was die Symbole sind? Ich denke, sie sollten es sein, <C-v>, <esc> and <C-a>aber es ist schwer zu sagen.
DJMcMayhem
@ DJMcMayhem Wird tun. Im Übrigen denke ich, dass Sie sie in Vim einfügen können und sie entsprechend angezeigt werden.
nmjcman101
2

FLTK, 47 Zeichen

Function{}{}{Fl_Window{}{}{Fl_Input{}{type 5}}}

Probelauf:

bash-4.4$ fluid -c password.fl

bash-4.4$ fltk-config --compile password.cxx 
g++ -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -fvisibility-inlines-hidden -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT -o 'password' 'password.cxx' -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -lfltk -lX11

bash-4.4$ ./password 

Beispielausgabe:

Passworteingabe in FLTK

Mann bei der Arbeit
quelle
2

Verarbeitung, 53 Bytes

String a="";void draw(){text(keyPressed?a+=0:a,9,9);}

Dies übernimmt die Eingabe per Tastendruck aus einem grafischen Fenster. Das Zeichen, mit dem Kennwörter dargestellt werden sollen, ist 0. Beachten Sie, dass aufgrund der hohen Framerate jeder Tastendruck als ein Vielfaches von 0s angezeigt wird (und auch aufgrund der Tatsache, dass dies ist keyPressedund nicht keyTyped(kein Boolescher Wert) oder keyrelease).

gif

Kritixi Lithos
quelle
2

Bash , 54 Bytes

while read -eN1 c 2>&-;[[ ${c/$'\r'/} ]];do printf X;done

$'\r'Kann zu Bewertungszwecken durch einen wörtlichen Wagenrücklauf ersetzt werden.

Probieren Sie es online! (nicht viel zu sehen)

Dennis
quelle
2

ZX81 BASIC, 54 Byte

10 IF LEN INKEY$ THEN GOTO PI
30 IF NOT LEN INKEY$ THEN GOTO EXP PI
50 IF INKEY$>"Z" THEN STOP
70 PRINT "*";
90 GOTO PI

Im ZX81-Zeichensatz befinden sich die druckbaren Zeichen im Bereich Leerzeichen bis Z, obwohl Sie auf diese Weise eigentlich kein Leerzeichen eingeben können, da es sich um das Umbruchzeichen handelt.

ZX Spectrum BASIC, 24 Byte

10 PAUSE NOT PI: IF INKEY$>=" " THEN PRINT "*";:GOTO PI

Beachten Sie, dass dieses >=Schlüsselwort in Sinclair BASIC (in diesem Fall Codepunkt 140) als Einzelbyte-Schlüsselwort zählt.

Neil
quelle
Sind die Leerzeichen zwischen den Zeilennummern und Funktionen notwendig?
MD XF
Könnten Sie verkürzen PRINTzu ?, ich , das funktioniert in vielen alten BASIC - Dialekte weiß
MD XF
@MDXF PRINTist ein 1-Byte-Token. Es wird nur auf dem Bildschirm als 7 Zeichen dargestellt (außer nach THEN, wenn das führende Leerzeichen unterdrückt ist).
Neil
2

R 29 Bytes

invisible(openssl::askpass())

Eingebaut, die Passworteingaben behandelt. Öffnet ein neues Fenster und ersetzt die Eingabe durch Punkte. invisiblewird verwendet, um das Drucken des Kennworts an STDOUT zu unterdrücken.

JAD
quelle
2

Tcl / Tk, 18

gri [ent .e -sh *]

Muss auf der in der interaktiven Shell ausgeführt werden (oder Abkürzungen aktiviert haben):

Bildbeschreibung hier eingeben

Sergiol
quelle
21 Bytes ohne die kniffligen Befehlsabkürzungen: grid [entry .e -sh *]und -shist eine Optionsabkürzung für -show. 23 Bytes ist das, was ich als Minimum für ein wartbares Programm ohne Golf betrachten würde , das dies tut.
Donal Fellows
2

Vim, 15 Tastenanschläge

:cal inp<S-tab>'')|q<cr>

<S-tab>bedeutet shift + tab.

Anscheinend gibt es dafür eine eingebaute Funktion, von der ich nichts wusste. Da mir meine manuelle Antwort sehr gut gefällt und dieser Ansatz völlig anders ist, habe ich mir vorgenommen, eine neue Antwort zu posten, anstatt sie zu bearbeiten.

Dies funktioniert, indem die inputsecretFunktion aufgerufen und sofort nach dem Beenden beendet wird.

DJMcMayhem
quelle
2

6502 Maschinencode (C64), 22 21 Bytes

0e 08 20 9f ff 20 e4 ff f0 f8 c9 0d f0 01 a9 60 20 d2 ff 50 ed

Verwendung :SYS 2062

In der Liste der kommentierten Demontagen (Commented Disassembly Listing, ACME) können Sie die ersten drei kommentierten Zeilen auskommentieren, die nach dem RUNLaden gestartet werden sollen:

!cpu 6502
!to "password2.prg",cbm
;* = $0801                               ; BASIC starts at #2049
;!byte $0d,$08,$dc,$07,$9e,$20,$32,$30   ; BASIC to load $c000
;!byte $36,$32,$00,$00,$00               ; inserts BASIC line: 2012 SYS 2062

    GETIN  =  $FFE4
    SCNKEY =  $FF9F
    CHROUT =  $FFD2

* = $080e
keyScan:
    jsr SCNKEY  ; get key
    jsr GETIN   ; put key in A

    beq keyScan ; if no key pressed loop    

    cmp #13     ; check if RETURN was pressed
    beq $081b   ; if true go to operand of next instruction (#$60 = rts)

    lda #$60    ; load char $60 into accumulator
    jsr CHROUT  ; print it

    bvc keyScan ; loop

Bemerkungen:

  • Ich habe in den Dokumenten nichts gefunden, aber es scheint, dass beq nach dem GETIN-Aufruf nur dort verzweigt, wo keine neuen Tastendrücke aufgezeichnet wurden.
  • Mit # $ 60 als Ausgabezeichen kann dieses Byte als "rts" -Anweisung wiederverwendet werden, wenn RETURN gedrückt wird.
Matteo Beniamino
quelle
2

Viertens (gviertens) , 54 Bytes

: f begin key dup 4 - swap 13 - * while ." *" repeat ;

Erläuterung

begin      \ enters the loop
    key    \ waits for a single character as input, places ascii code of character on stack
    dup    \ duplicates the key value on the stack
    4 -    \ subtracts 4 from the key value (shorter way of checking for not equals)
    swap   \ swaps the top two stack values
    13 -   \ subtract 13 from the key value
    *      \ multiply top two stack values (shorter version of "and")
while      \ if top of stack is true, enter loop body, else exit loop
    ." *"  \ output *
repeat     \ go back to beginning of loop
reffu
quelle
1

Python 3 + tkinter- 63 61 Bytes

from tkinter import*
t=Tk();Entry(show=1).pack();t.mainloop()

Zeigt 1für jedes Zeichen ein an und endet beim Schließen des Fensters (OP hat dies erlaubt).

Gif

Mr. Xcoder
quelle
Würde from tkinter import*(newline) Entry(show=1).pack();Tk().mainloop()funktionieren?
Conor O'Brien
@ ConorO'Brien testen
Mr. Xcoder
@ ConorO'Brien nein. Es werden zwei verschiedene tkinterFenster erzeugt. Eins mit dem Textfeld, eins leer. Es scheint mir nicht richtig zu sein.
Mr. Xcoder
Benötigen Sie das show=?
Esolanging Fruit
@ Challenger5 Ja, wir brauchen denshow=
Mr. Xcoder
1

Groovy, 77 73 Bytes

{new java.awt.Frame(){{add(new javax.swing.JPasswordField());visible=1}}}

Dies ist ein anonymer Abschluss mit 0 erforderlichen Eingaben.

Ungolfed:

{
    new java.awt.Frame() {
        {
            add(new javax.swing.JPasswordField())
            visible=1
        }
    }
}

Edit 1 (-4 Bytes): Component # visible kann direkt aufgerufen werden, lesen Sie hier mehr .

Magische Kraken-Urne
quelle
1

Mikro , 35 Bytes

"":i{L46c:\
i~+:i
i10c=if(,a)}a
i:\

Erklärung:

"": Ich erstelle eine neue leere Zeichenkette 'i'
    {Eingabeschleife beginnen
     L ein Zeichen eingeben
      46c: \ display ascii char # 46 (.)
           i ~ +: Ich drücke i, drehe i und den Char herum, konzentriere sie und speichere das für i
                i10c = if (, a)} a OK, hier passiert viel, wenn sich eine NL in i befindet, wird die Schleife beendet und das letzte i: \ zeigt die Eingabe an

raddish0
quelle
1
Das ist ein ziemlich guter erster Versuch einer Sprache! +1
MD XF
1

BF, 24 Bytes

++++++[->++++++<],[>.<,]

Funktioniert mit bf.doleczek.pl . Sie können mit Strg + Z ein Nullzeichen an das Programm senden.

Alternative Lösung:

BF, 1 Byte

,

Dies ist eine sehr witzige Lösung. Mein Terminal ist 0 Zeichen breit. Bitte geben Sie keine längeren Passwörter ein.

Esolanging Fruit
quelle
Whoa ... nicht schlecht!
MD XF
@MDXF Beziehen Sie sich auf die 24-Byte- oder die 1-Byte-Version?
Esolanging Fruit
Ganz klar das 24-Byte-Format. Ich habe völlig vergessen, dass Drucken \beine Sache ist. : P
MD XF
@MDXF Was meinst du damit? \bist sowieso nicht bedruckbar.
Esolanging Fruit
Nein, ich meine Ihre Lösung verwendet \b, um die Eingabe zu überschreiben, richtig?
MD XF
1

PowerShell, 12 Byte

Read-Host -a

Hiermit werden Eingaben vom Host gelesen und mit dem Flag -a als sichere Zeichenfolge / Kennwort behandelt. In der ISE wird ein Meldungsfeld angezeigt, das ein ähnliches Verhalten aufweist, da die ISE keine Tastendruckerfassung zulässt.

PS C:\Windows\system32> Read-Host -a
************
Chirishman
quelle
1

QBasic, 48 Bytes

DO
a$=INPUT$(1)
IF ASC(a$)=13THEN END
?"*";
LOOP

INPUT$(1)Liest das nächste Zeichen von der Tastatureingabe. (Dies kann Dinge wie Tab, Backspace und Escape beinhalten, aber da das OP nichts über diese gesagt hat, gehe ich davon aus, dass wir uns keine Sorgen machen müssen.) Wenn das Zeichen \r(ASCII 13) ist, beenden Sie das Programm; Andernfalls drucken Sie *ohne Zeilenumbruch. Wiederholen Sie ad infinitum.

DLosc
quelle
1

Perl + Bash, 30 Bytes

print"*"while$|=1+`read -sn 1`

cis *, wird readvon bash verwendet, ist also keine reine Perl-Lösung.

Dom Hastings
quelle
1

Brainfuck, 21 Bytes

-[+>,[<->+[<.>[-]]]<]

Letzteres verspreche ich. Keine Eingabe = -1, Eingabeende = 0

Wie es funktioniert

-[  Enters the loop
  +>, Get input
     [<->+ If not end of input it create the ÿ character and check if the input is not -1
          [<.>[-]]] If there was input, print the ÿ character. 
                    <] Exit the loop if end of input
Scherzen
quelle
In Ihrem Code fehlt eine schließende Klammer. Und warum machst du es so kompliziert? Ein einfaches "Drucken eines 'ÿ' für jedes eingegebene Zeichen" könnte mit einer einfachen,[>-.,]
Dorian
@Dorian Die Klammer war ein Fehler, aber die Komplexität ergibt sich aus der Notwendigkeit, sowohl keine Eingabe als auch das Ende der Eingabe zu verarbeiten
Jo King,
0

QBIC , 44 Bytes

{X=inkey$~X<>@`|~X=chr$(13)|_X\Y=Y+@*`_C?Y

Erläuterung

{            DO
X=inkey$     Read a char, set it to X$
             Note that INKEY$ doesn't wait for keypress, but simply sends out "" if no key was pressed.
~X<>@`|      IF X$ has a value THEN
~X=chr$(13)| IF that value is ENTER
_X           THEN END
\            ELSE
Y=Y+@*`      append a literal * to Y$
_C           Clear the screen
?Y           Display Y$ (having 1 * for each char entered)
             The IF's and the DO-loop are auto-closed at EOF{            DO
steenbergh
quelle