In von der Karte eingegebenen ASCII-Zeichen habe ich Sie gebeten, .. eingegebene ASCII-Zeichen zuzuordnen. Dieses Mal tun Sie das Gegenteil, indem Sie sofort alle ASCII-Zeichen zuordnen und dann Leerzeichen über ihnen zuordnen.
Dieses Programm hat praktische Verwendungszwecke, z. B. das Anzeigen der Zeichen, die Sie in einem Programm hinterlassen haben eingeschränkte Quelle Herausforderung einreichen.
Herausforderung
Ihre Aufgabe ist es, ein Programm zu schreiben , dass un eingegebenen ASCII - Zeichen -Karten. Sobald das Programm ausgeführt wird, wird genau diese Karte angezeigt (außer Farbe, Schriftart, Größe usw.):
Jedes Mal, wenn der Benutzer ein druckbares ASCII-Zeichen eingibt, wird ein Leerzeichen darüber gedruckt.
Regeln
- Die anfängliche Ausgabe muss genau wie im ersten Bild oben gezeigt sein: ein 6x16-Raster mit ASCII-Zeichen an ihren jeweiligen Positionen, wobei das Leerzeichen (32) oben links und die Tilde (126) ein Zeichen links unten rechts sind.
- Ihr Programm muss nur die druckbaren ASCII-Zeichen anzeigen,
0x20
um0x7E
. - Ihr Programm darf nicht beendet werden und weiterhin Leerzeichen über Zeichen drucken, bis alle druckbaren ASCII-Zeichen überschrieben wurden. Von hier aus kann Ihr Programm entweder beendet oder in Neverland ausgeführt werden.
- Ihre Reverse Map muss in Echtzeit aktualisiert werden (sobald sie Benutzereingaben erhält).
- Wenn Ihr Programm Eingaben nicht still liest, muss es den Cursor aus dem Weg räumen, damit der Text der Karte nicht im Weg steht.
Hier ist eine nützliche ASCII-Tabelle als Referenz.
Wertung
Die Antwort mit den wenigsten Bytes in jeder Sprache gewinnt. Habe Spaß!
Your program only needs to display the printable ASCII characters, 0x20 to 0x7E
Antworten:
SOGL V0.12 , 23 Bytes
Probieren Sie es hier aus!
Nimmt Eingaben in das Eingabefeld vor. Ich hoffe, dass es kein allzu großes Problem ist, dass Zeichen gelöscht werden können: p
Erläuterung:
quelle
x86-16 Maschinencode, 62 Byte
Hex Dump:
Versammlung:
quelle
C ++ (Visual C ++) , 253 (@Step Hen)
261Bytesquelle
#include
s sowiei + 0x20
-> entferneni+0x20
. Ich könnte mich jedoch irren.Python 3 , 116 Bytes
Probieren Sie es online aus!
quelle
Python 2 , 132 Bytes
4 Bytes dank @alleks gespeichert!
Probieren Sie es online aus!
quelle
[:-2]
nachher hinzufügen könnenprint s
?JavaScript (ES6) + HTML,
139136116 +1016 = 132 Byte-3 Bytes dank @Shaggy.
-14 Bytes inspiriert von @Arnauld.
pre
In diesem Fall ist das Schließen des Tags erforderlich, da derinnerText
Wert vollständig leer beginnen muss.quelle
O[h="innerHTML"]=a=[...Array(95)].map()
.a
vollständig entfernen .a
Variable verwendet, weilinnerHTML
sie&
sich&
zusammen mit einigen anderen in verwandelt hat . Umschalten aufinnerText
behoben.i
in den globalen Bereich wechseln , um 2 Bytes zu speichern:map(_=>String.fromCharCode(i++)+(i%16?...),i=32)
QBasic , 107 Bytes
Eine anonyme Funktion, die als Tastenanschläge eine ASCII-Tabelle löscht
-8 Bytes dank @DLosc
quelle
Sub
dortige - großartige Lösung zu verwenden. Leider müssen wir das zählen,End Sub
da die Community entschieden hat, dass die automatische Vervollständigung nicht gültig ist (zumindest bei VBA, aber ich bin sicher, dass dies auch hier gilt)C # (.NET Core) , (138 + unter Verwendung von System;) 151 Bytes
Probieren Sie es online aus!
quelle
using System;
in Ihre Byteanzahl aufnehmen, wenn Sie dies noch nicht getan haben (ich habe vergessen, es in die obige Zählung aufzunehmen).Node.js
233212 Bytes21 Bytes dank @thePirateBay gespart
Dies funktioniert, ich versuche immer noch, eine Online-Option zu finden, da alle Antworten, die ich gefunden habe, stdin hijacken.
Probieren Sie es online aus
quelle
b
und verwenden auch einen nicht initialisierten Bezeichnerreadline
(nicht sicher, ob er mit der Version auf TIO kompatibel ist). Sie benötigen auch überhaupt keine Variablenr
, statt&&
am Ende können Sie,
Klammern verwenden und neu anordnen. Gleiches gilt für die&&
am Anfang. Auch keine Notwendigkeitprocess.stdout
in derreadline
Schnittstelle, etc ...........process.stdout
es wirft (zumindest auf meiner Version des Knotens). Die Readline-Sache war ein Tippfehler (drücken Sie zu oft Strg-Z). Ich werde das&&
s ändern .process.stdout
. Sie können die Spezifikation lesen . Es kann einen Fehler auslösen, wenn Sie den Rest Ihres Codes durcheinander gebracht haben oder wenn Sie eine alte / inkonsistente Version von Node.js verwenden.createInterface
kehrt anscheinend zurück,undefined
wenn Sie den zweiten Parameter weglassen. Ich habe es jedoch gemäß den von Ihnen verlinkten Dokumenten entfernt. Wie machen Sie TIO interaktiv?for(a=[],l=_=>console.log(a.join``),i=32;i<127;x=String.fromCharCode(i++),a.push(i&15?x:x+'\n'));l();require('readline').createInterface(process.stdin).on('line',c=>(a[a.indexOf(c)]=' ',l)())
65c02 Maschinencode + Apple // e ROM, 52 (47?) Bytes
Hex Dump:
Kommentierte Montage:
Dies hat überhaupt keinen Cursor. Ich habe auch eine 47-Byte-Version, die möglicherweise gültig ist, je nachdem, was mit "den Cursor aus dem Weg räumen, damit der Text der Karte nicht im Weg steht" gemeint ist:
Dadurch wird ein Cursor auf das Zeichen nach dem eingegebenen Zeichen gesetzt (dies ist der Abstand zwischen den Zeichen), sodass keine der tatsächlichen Zeichen in der Karte überschrieben werden. Ob dies gültig ist oder nicht, ist Sache des Erstellers der Herausforderung.
quelle
Python 2 , 96 Bytes
Probieren Sie es online aus! Die Ausgabe sieht auf TIO zweifelhaft aus (da die Eingabe von einer Datei übergeben wird), ist aber interaktiv in Ordnung. Ich hoffe
'A'\n
,'B'\n
etc ist ein okay Eingabeformat.quelle