Не забудьте увидеть другой вызов, Reverse ASCII символьную карту !
Кодировка ASCII (американский стандартный код для обмена информацией) является наиболее широко используемым стандартом кодирования символов. Коды ASCII представляют текст в компьютерах, телекоммуникационном оборудовании и других устройствах.
Вызов
Ваша задача состоит в том, чтобы напечатать отображение набора символов ASCII, когда пользователь вводит их. GIF:
После того, как пользователь вводит каждый символ ASCII, вывод должен выглядеть следующим образом:
картографирование
Каждому символу назначается позиция в логической сетке 16x6, начиная с символа пробела в левом верхнем углу и заканчивая таким образом, что под ним появляется цифра 0.
При получении печатного ввода ASCII напечатайте этот символ ASCII в назначенном для него месте на экране, не удаляя символы, отображаемые в данный момент на экране.
правила
- Ваша программа должна только отобразить печатаемые символы ASCII,
0x20
чтобы0x7E
. - Ваша программа не должна завершаться и продолжать отображать символы на экране до тех пор, пока не будут введены все печатные символы ASCII. Отсюда ваша программа может либо прекратить, либо убежать в Неверлэнд.
- Ваша программа может отображать символы любым удобным вам способом, например, в электронную таблицу, таблицу, окно консоли или графическое окно.
- Независимо от того, как вы отображаете отображение, оно должно обновляться в реальном времени (как только оно получает пользовательский ввод).
- Если ваша программа не читает ввод молча, она должна убрать курсор, чтобы текст не мешал карте.
Помогите
Вот алгоритм псевдокода, который я использовал для генерации GIF:
loop forever
c = input
y_coord = c / 16
x_coord = c - y * 16
if c is printable
print c at (x_coord * 2 + 1, y_coord + 1)
end if
end loop
Может быть другой способ достижения требуемого результата. Вы можете использовать мой алгоритм или свой собственный, но результат должен быть одинаковым независимо.
Вот полезная ссылка на таблицу ASCII.
счет
Ответ с наименьшим количеством байтов на каждом языке выигрывает. Повеселись!
Ответы:
QBIC ,
5357 байтДобавлено 4 байта для пробела.
QBIC начал разработку как сокращение для QBasic, поэтому я подумал, что перевод моего ответа QBasic продемонстрирует это наглядно. Мы сэкономили около 40% в байт-счетчик для функционально идентичной программы - и это даже тогда , когда
LOCATE
,ASC
иCHR
не имеют QBIC-функции еще. К счастью, QBIC может передать код непосредственно в QBasic, чтобы компенсировать это. Бок о бок:источник
JavaScript (ES6) + HTML, 114 + 16 = 130 байт
Сохранено 16 байтов благодаря @Shaggy
Это так невероятно приятно просто пюре из клавиатуры ...
источник
prompt()
внутри цикла? Это избавит вас от всей обработки событий и HTML. ОП, кажется, позволяет это. См. Комментарии к сообщению Mathematica.onkeypress
сам по себе, позволяя вам сброситьbody
тег. Такжеpre
тег можно сократить до всего<pre id=O
. Тем не менее, вам нужно будет включить закрытие,>
чтобы оно работало в сниппете.QBasic 4.5,
8185 байтДобавлены 4 байта для соответствия правилу интервалов.
И вывод будет выглядеть так (ПРИМЕЧАНИЕ: старый скриншот, теперь каждый символ разделен пробелом):
У QBasic есть
LOCATE
команда, которая здесь пригодится. Разбивка этого кода:источник
Java 8 , 143 байта
Использует управляющий код ANSI
CSI n ; m f
для установки положения курсора иConsole.readPassword()
для тихого чтения пользовательского ввода. Вывод некоторых символов:источник
readPassword()
использовался таким образом. О, и вы, кажется, пропустили точку с запятой после печати. Кроме того, не возможно использоватьSystem.out.printf
как-то вместоSystem.out.println(String.format(
? И вы можете изменить()->
наo->
с помощью неиспользуемого пустого параметра .BrainFuck , 355 байт
Возможности BrainFuck довольно ограничены, поэтому вывод выводится в терминале, а экран «очищается» с помощью 20 новых строк. Ввод должен состоять из символов ASCII, разделенных символами новой строки.
Попробуйте онлайн!
Отформатировано и задокументировано
Это отладочные заметки, которые я использовал для написания программы. Я использовал мой интерпретатор, который может дополнительно печатать состояние ленты на каждом символе '~' для отладки.
источник
Mathematica, 108 байт
Попробуйте это онлайн на https://sandbox.open.wolframcloud.com/
Когда вы вставляете код и нажимаете
Shift+Enter
, появляется диалоговое окно, вы вводите,"a"
например, для символаa
. Программа работает вечно.Примечание. В песочнице Wolfram шрифт отформатирован не так, как в Mathematica на моем компьютере. Так что интервал между строками и столбцами может выглядеть странно.
источник
OK
на поле ввода, появляется другое поле ввода для ввода ввода.Python 2 , 115 байт
Попробуйте онлайн!
Требуются кавычки (одинарные или двойные) вокруг введенных символов (версия TIO этого не делает).
источник
raw_input
это,input
поскольку это перепись сообщества, и вы можете предположить, что входные данные содержат кавычки, если это необходимо.{
без соответствия}
.ул , неконкурентный, 18 байт
Представляю мой новый полуэзотерический язык.
источник
Haskell, 133 байта
Требуется терминал, который понимает escape-последовательности ANSI.
Короче держать список всех нажатых клавиш и очищать экран перед печатью всех из них каждый раунд, чем отключать эхо в терминальной сессии. Последний нуждается
import System.IO
иhSetEcho stdin(2<1)
который стоит слишком много байтов.источник
C 101 байт
Это была программа, которую я использовал для создания графики. Вывод, как показано в GIF. ;)
источник
QBasic,
6258 байтПротестировано с QB64 . Должно работать и на обычном QBasic, хотя вы можете изменить его, чтобы сделать
CLS
при первом запуске.Похоже на ответ Стинберга , но использует
INPUT$(1)
для чтения символов по одному. Этот подход короче и также не отображает подсказку. Он также используетсяRUN
для бесконечного цикла, так как нам не нужно хранить какое-либо состояние между итерациями, кроме состояния экрана.источник
input$()
. Мне тоже нравится TIPS-тема.Паскаль, 112 символов
Поскольку мое решение Mathematica занимает много байтов
div
,mod
иToCharacterCode[Input[]]
я пытаюсь найти другой ответ с помощью Паскаля. Но безClrScr
моего компилятора (FPC) на экране остались некоторые сведения о компиляции.ClrScr;
занимает 7 байтов.*2
Используется для правильного расстояния занимает еще 2 байта.источник
LOGO, 90 байт
Попробуйте это на FMSLogo.
В конце концов, мое решение с логотипом является самым коротким по сравнению с моими ответами Mathematica и Pascal.
Добавьте 3 байта, если черепаха должна быть скрыта.
источник
6502 машинный код + Apple // e ROM, 31 байт
Шестнадцатеричный дамп:
Комментируемая сборка:
Если курсор делает его недействительным, вот 36-байтовая версия без курсора:
источник
Ruby,
797571 + 13 = 84 байта+13 байт за
-rio/console
флаг.Ungolfed
источник
SmileBASIC 3, 82 байта
В наборе символов SmileBASIC
¥
находится там, где\
обычно будет; надеюсь, это не лишит законной силы этот ответ полностью.источник
Applesoft BASIC , 134 байта
Это гольф-версия Apple] [тест клавиатуры, программа, которая вдохновила вызов.
источник