Буква, цифра, символ, пробіл, повторення


36

Є 97 персонажів ASCII, з якими люди стикаються регулярно. Вони поділяються на чотири категорії:

  1. Букви (52 всього)

    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    
  2. Числа або цифри (всього 10)

    0123456789
    
  3. Символи та пунктуація (всього 32)

    !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
    
  4. Пробіл (3 усього)

    Пробіл , вкладка \tта новий рядок \n. (Ми розглянемо варіанти нових рядків, \r\nяк один символ.)

Для стиснення ми назвемо ці категорії L, N, S і W відповідно.

Виберіть будь-яку з 24 перестановок бажаних літер LNSWі повторіть її нескінченно, щоб сформувати для себе шаблон програмування.

Наприклад, ви можете вибрати перестановку NLWS, тож ваш шаблон програмування буде таким:

NLWSNLWSNLWSNLWSNLWS...

Вам потрібно написати програму або функцію на основі цього шаблону, де:

  1. Кожен Lзамінюється будь-якою літерою ( ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz).

  2. Кожен Nзамінюється будь-яким числом ( 0123456789).

  3. Кожен Sзамінюється будь-яким символом ( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).

  4. Кожен Wзамінюється будь-яким символом пробілу ( \t\n).

В основному, ваш код повинен відповідати шаблону

<letter><number><symbol><whitespace><letter><number><symbol><whitespace>...

як підказує заголовок питання, за винятком випадків ви можете вибрати інше впорядкування чотирьох категорій символів, якщо це потрібно.

Зауважте, що:

  • Заміни для категорії можуть бути різними символами. наприклад, 9a ^8B\t~7c\n]дійсно відповідає шаблону NLWSNLWSNLWS( \tі \nце буде їх буквальна характеристика).

  • Немає обмежень щодо довжини коду. наприклад , 1A +2B -і 1A +2Bта 1A і 1все відповідає шаблоном NLWSNLWSNLWS....

Що повинен відповідати шаблону коду, це взяти один нерозширений символ ASCII та вивести число від 0 до 4, залежно від того, до якої категорії він входить у вищезазначеній категорії. Тобто виведіть, 1якщо введенням є літера, 2якщо число, 3якщо символ і 4пробіл. Виведіть, 0якщо вхід не має жодного з цих ( контрольний символ ).

Для введення можна альтернативно взяти число від 0 до 127 включно, що представляє код вхідного символу ASCII.

Вхідні дані (як char код) та парами виводу, які повинен мати ваш код, мають бути наступними:

in out
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 4
10 4
11 0 or 4
12 0 or 4
13 0 or 4
14 0
15 0
16 0
17 0
18 0
19 0
20 0
21 0
22 0
23 0
24 0
25 0
26 0
27 0
28 0
29 0
30 0
31 0
32 4
33 3
34 3
35 3
36 3
37 3
38 3
39 3
40 3
41 3
42 3
43 3
44 3
45 3
46 3
47 3
48 2
49 2
50 2
51 2
52 2
53 2
54 2
55 2
56 2
57 2
58 3
59 3
60 3
61 3
62 3
63 3
64 3
65 1
66 1
67 1
68 1
69 1
70 1
71 1
72 1
73 1
74 1
75 1
76 1
77 1
78 1
79 1
80 1
81 1
82 1
83 1
84 1
85 1
86 1
87 1
88 1
89 1
90 1
91 3
92 3
93 3
94 3
95 3
96 3
97 1
98 1
99 1
100 1
101 1
102 1
103 1
104 1
105 1
106 1
107 1
108 1
109 1
110 1
111 1
112 1
113 1
114 1
115 1
116 1
117 1
118 1
119 1
120 1
121 1
122 1
123 3
124 3
125 3
126 3
127 0

Входи 11, 12 і 13 відповідають символам, які іноді вважаються пробілами, тому їхні виходи можуть бути 0або 4за вашим бажанням.

Виграє найкоротший код у байтах.


5
Файли cookie на першу відповідь на 2d мові.
Захоплення Кальвіна

2
Тому просто використовуйте BF і використовуйте букви SSSS
Крістофер

2
Це в основному виключає всі звичайні мови програмування 🙄 Також, що робити з мовами, які використовують власну кодову сторінку, наприклад, Jelly?
kennytm

1
Інші символи заборонені.
Захоплення Кальвіна

2
Унар переможе!
Крістофер

Відповіді:


38

Haskell 300 байт

У цьому коді не повинно бути наступного нового рядка. Функція m1приймає введення як a Charі повертає відповідь як a Char.

f1 (l1 :n1 :p1 :y1 :l2 :n2 :p2 :y2 :r3 )x1 |y1 >p1 =b1 (x1 )y2 (f1 (r3 )x1 )y1 (n1 )n2 |p2 <p1 =b1 (x1 )y1 (n1 )p2 (f1 (p2 :y2 :r3 )x1 )l2 |p2 >p1 =b1 (x1 )p1 (l2 )l1 (n2 )n1
;b1 (x1 )s1 (r1 )b1 (r2 )r3 |x1 <s1 =r1 |x1 >b1 =r2 |s1 <b1 =r3
;m1 =f1 "d0 \t4 \r0 ~d3 {d1 `d3 [d1 @d3 :d2 /d3 !d4 \n0 ?d0 "

Я не міг протистояти виклику, який хтось стверджував, що неможливий для "звичайних" мов.

Ви можете заперечити, чи вважається Haskell, але більшість ключових слів та ідентифікаторів є кількома символами, і їх не можна використовувати. Однак визначення функцій верхнього рівня, списки, рядкові літерали, суворі порівняння, узгодження шаблонів і розгалуження за допомогою гвардійців працюють, доки букви надходять безпосередньо перед цифрами, і якщо символи також надходять перед буквами, у нас є символи втечі, як \tі \r. На жаль, перестановки, які працюють для загального програмування, не дозволяють числових літералів, тому я не міг отримати чисел корисним чином.

Як це працює:

  • Інтервали класів символів кодуються в рядку в останньому рядку, з крайовими символами в більшості місць символів і результатами в більшості знаків з цифрами, хоча деякі на кінцях прошиті.
  • Основна функція - m1.
  • x1 - це характер, який аналізується.
  • f1Функція розбиває рядок відповідності списку шаблонів, і має три гілки: коли кордони є символи більше простору, коли кордони екрануються керуючими символами менше простору, а також для обробки остаточного порівняння з самим простором. Назви фрагментів списку мнемонічні для першої гілки: Letter, Number, sPace, sYmbol, Remainder.
  • У b1функції ручка розгалуження для двох граничних знаків s1 < b1в той час.

Спробуйте в Інтернеті


1
Ласкаво просимо на сайт! Я здогадуюсь, що це буде коротше, ніж більшість нетрадиційних мов, які фактично можуть досягти необхідного результату.
Джонатан Аллан

Gret відповідь! Я спробував скористатися Haskell, але здався через короткий час ...
Laikoni

14

Сітківка , 113 байт

Буква, цифра, пробіл, символ, повторення

T1 `a0 @a0 `b1	:D0
+T1 `d9 `a2
+T1 `a9	\n9 `a4
+T1 `l9 @L9 `a1
+T1 `d9 @p9 `d3
\b4
$n3
\b3
$n2
\b2
$n1
\b1
$n0
\n

Спробуйте в Інтернеті!

Перевірте це на собі!

Retina здається приємним інструментом для цієї роботи: ми можемо гнучко використовувати всі типи символів у сценічній конфігурації, і ми маємо кілька заздалегідь визначених класів символів, які можуть бути корисними.

Я думаю, що цю проблему можна вирішити або на етапах заміни, або на етапах транслітерації; Я вибрав транслітерації, оскільки вони більш гнучкі, і вони мають найкорисніші класи символів. Щодо шаблону джерела, я змушений був розміщувати символи перед буквами, щоб використовувати \nдля нових рядків (я фактично мав коротше рішення, використовуючи більш практичне ¶ для нових рядків, але символи, що не містять асоцій, заборонені).

Пояснення

Перші етапи - це транслітерації. Ми використовуємо +і 1як варіанти, щоб продовжувати схему, але це не вплине на результат етапу. Синтаксис - T`from`toце відображення кожного символу fromсимволу в одній позиції в to. Якщо toкоротше from, то його остаточний характер повторюється стільки, скільки потрібно. Якщо fromє повторні символи, вважається лише перше виникнення кожного з них. Деякі літери відповідають класам символів, наприклад d, еквівалентно 0123456789.

T1 `a0 @a0 `b   :D0

За допомогою цього ми відображаємо деякі символи для інших символів того ж класу, щоб "зробити трохи місця" для наступних транслітерацій. ( a-> b, 0-> 1, space-> tab, @-> ;). Фінал :D0- просто смайлик: D0

+T1 `d9 `a2

Ми починаємо з цифр, dце клас символів 0-9, тут ми перетворюємо 0-> a, 1-9-> 2, space-> 2: транслітерації для 0і spaceпомиляються, але ці символи були усунені попередньою транслітерацією.

+T1 `a9 \n9 `a4

Прогалини, перетворення a-> a( 9, tab, \n, space) -> 4. 9було видалено вже на попередньому етапі.

+T1 `l9 @L9 `a1

Букви, тут ми використовуємо два різні класи символів (для відсутності більш повного): lдля малих літер та Lдля великих літер. Усі вони відображаються 1разом із деякими іншими персонажами, які були розроблені на попередніх етапах

+T1 `d9 @p9 `d3

Символи. Оскільки кожен клас був перетворений в цифри, то тут ми відображаємо всі цифри до себе з d-> d, а потім все друковані символи 3з p-> 3. Цифри також є серед символів для друку, але перша транслітерація виграє.

Тепер нам потрібно призначити 0контрольні символи, але я не знайшов дійсного способу чітко звернутися до цього класу. Замість цього ми перетворимо кожну цифру в одинарну: контрольні символи не є цифрами, тому вони вважаються порожнім рядком, який дорівнює 0унарному. На жаль, команда одинарного перетворення в сітківці є $*двома символами один біля одного, тому ми замість цього перетворимо "вручну" за допомогою підстановок.

\b4
$n3
\b3
$n2
\b2
$n1
\b1
$n0

Наша одинарна цифра - $nце схема заміни нових рядків. \bвідповідає "межі", де буквено-цифрове слово починається або закінчується: у нашому випадку це завжди збігатиметься перед будь-яким числом. Ми в основному замінюємо кожне число nновим рядком плюс n-1.

\n

Зрештою, підраховуємо кількість нових рядків і отримуємо бажаний результат.


11

Кардинал 2240 2224 байт

Використовуваний шаблон LSNW

a%1
a:1 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a+1 a+1 a+1 a+1 a.1 x.1 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a.0 a>0 a+1 a+1 a+1 a+1 a.1 x>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a+1 a+1 a+1 a.0 x>1 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a+1 a+1 a.0 x>1 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a>0 a+1 a+1 a+1 a.0 x>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a+1 a.0 x>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a+1 a+1 a+1 a.0 x>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a>1 a+1 a.0 x>1 a>1 a>1 a>1 a>1 a>1 a>1 a+1 a+1 a+1 a.0
a>1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a>1 a>1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a>1 a>1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a>1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a>1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a>1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^1 a>1 a-1 J^1 a-1 J^1 a-1 J^1 a-1 J^0 a.0

У коді є зворотний новий рядок.

Як це працює:

Цей код містить багато символів, які не використовуються.
% випускає вказівник у всіх напрямках. 3 з них просто потрапляють у кінець рядка і гинуть.
Останній покажчик приймає вхід на:
Цей вхід порівнюється з кожним значенням від 0 до 127.

Друки:
0 для 0-8
4, 9-12
0 для 13-31
4 для 32
3 для 33-47
2 для 48-57
3 для 58-64
1 для 65-90
3 для 91-96
1 для 97-122
3 за 123-126
0 за 127

Використані операції:
J = Пропустити наступну операцію, якщо не дорівнює нулю
^ = Змінити напрямок вгору
> = Змінити напрямок вліво
- = Зменшення
+ = Приріст
: = Візьміть введення
% = Створіть покажчики на початку програми
x = Видалити покажчик
0 = Встановити активний значення вказівника на 0

Спробуйте в Інтернеті


7

Perl 5 , 293 байти

291 байт код + 2 для -0p.

Мені повідомили, що прапори командного рядка безкоштовні, але я додав їх сюди для наочності, оскільки посилання TIO не включає -0для легшого тестування.

y 0-a 1"a 1#a 1$a 1%a 1&a 1'a 1(a 1)a 1*a 1+a 1,a 1.a 1/a 1_a 1{a 1|a 1}a 1~a 0!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 1!a 0;s 0\s
0\t
0;s 0\d
0\r
0;s 0\w
0\n
0;y 1!a 9-a 1_a 0-Z 1;s 0\w
0\u 3\u 0;s 1\S
1\u 0\u 1;s 0\t
0\u 4\u 0;s 0\r
0\u 2\u 0;s 0\n
0\u 1\u 0

Спробуйте в Інтернеті!

Це особливо складне завдання вирішити майже будь-якою мовою, тому я дуже щасливий, що зміг (нарешті, багато повозитися і вимкнути протягом досить тривалого часу) отримати це, працюючи в Perl. Сподіваємось, додатковий пробіл до та після номера не є проблемою.

Вибір порядку послідовності був особливо складним, але загалом s///і y///може сприймати будь-який інший символ як роздільник, так що можна було використовувати літеру, пробіл, цифру, символ, що дозволяє s 0...0...0;і y 0...0...0;.

Перше, що потрібно для appraoch, було замінити _на !так, щоб \wце відповідало лише [0-9a-zA-Z], а потім замінити всі пробіли ( \s) \t, всі цифри \rі всі символи слова, що залишилися ( \w), \nщоб пізніше було легко відповідати. Потім, використовуючи y///оператор, всі інші символи перетворюються в символи слова !до _і всіх інших символів (між 9і a) зміщуються вниз 9 місць, перетворюючи їх в букви або цифри. Вони потім замінити через \wз 3та інші, раніше зроблені заміни замінені їх пронумерованих значень.


1

Пробіл , 1332 байт

Y0! Y0! Y0! Y0!
Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0!
Y0! Y0! Y0! Y0!
Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0!
Y0!
Y0! Y0!
Y0! Y0! Y0!
Y0!
Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0!
Y0! Y0! Y0!
Y0!
Y0!
Y0!
Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0!
Y0! Y0! Y0!
Y0!
Y0!
Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0! Y0!
Y0! Y0!
Y0! Y0! Y0!
Y0!
Y0!
Y0!
Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0!
Y0! Y0! Y0!
Y0!
Y0!
Y0!
Y0! Y0! Y0! Y0! Y0!
Y0! Y0! Y0! Y0!
Y0! Y0!
Y0! Y0! 

Порядок - 1234/ LNSW(літера, цифра, символ, пробіл).

Спробуйте в режимі он-лайн (введіть як ціле число, що представляє унікод символу).

Пояснення:

Пробіл - це мова, що базується на стеці, де кожен символ, крім пробілів, вкладок та нових рядків, ігнорується. Ось та сама програма без YO!( 333 байтів ):

[S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve][S N
S _Duplicate_input(9)][S N
S _Duplicate_input(10][S N
S _Duplicate_input(32)][S N
S _Duplicate_input(33-47)][S N
S _Duplicate_input(48-57)][S N
S _Duplicate_input(58-64)][S N
S _Duplicate_input(65-90)][S N
S _Duplicate_input(91-96)][S N
S _Duplicate_input(97-122)][S N
S _Duplicate_input(123-126)][S S S T    S S T   N
_Push_9][T  S S T   _Subtract][N
T   S S N
_If_0_Jump_to_Label_WHITESPACE][S S S T S T S N
_Push_10][T S S T   _Subtract][N
T   S S N
_If_0_Jump_to_Label_WHITESPACE][S S S T S S S S S N
_Push_32][T S S T   _Subtract][S N
S _Duplicate][N
T   S S N
_If_0_Jump_to_Label_WHITESPACE][N
T   T   S T N
_If_negative_Jump_to_Label_NONE][S S S T    T   S S S S N
_Push_48][T S S T   _Subtract][N
T   T   N
_If_negative_Jump_to_Label_SYMBOL][S S S T  T   T   S T S N
_Push_58][T S S T   _Subtract][N
T   T   S S N
_If_negative_Jump_to_Label_DIGIT][S S S T   S S S S S T N
_Push_65][T S S T   _Subtract][N
T   T   N
_If_negative_Jump_to_Label_SYMBOL][S S S T  S T T   S T T   N
_Push_91][T S S T   _Subtract][N
T   T   T   N
_If_negative_Jump_to_Label_LETTER][S S S T  T   S S S S T   N
_Push_97][T S S T   _Subtract][N
T   T   N
_If_negative_Jump_to_Label_SYMBOL][S S S T  T   T   T   S T T   N
_Push_123][T    S S T   _Subtract][N
T   T   T   N
_If_negative_Jump_to_Label_LETTER][S S S T  T   T   T   T   T   T   N
_Push_127][T    S S T   _Subtract][N
T   T   N
_If_negative_Jump_to_Label_SYMBOL][N
S N
S T N
_Jump_to_Label_NONE][N
S S S N
_Create_Label_WHITESPACE][S S S T   S S N
_Push_4][T  N
S T _Print_as_integer][N
N
N
_Exit][N
S S N
_Create_Label_SYMBOL][S S S T   T   N
_Push_3][T  N
S T _Print_as_integer][N
N
N
_Exit][N
S S S S N
_Create_Label_DIGIT][S S S T    S N
_Push_2][T  N
S T _Print_as_integer][N
N
N
_Exit][N
S S T   N
_Create_Label_LETTER][S S S T   N
_Push_1][T  N
S T _Print_as_integer][N
N
N
_Exit][N
S S S T N
_Create_Label_NONE][S S S N
_Push_0][T  N
S T _Print_as_integer]

Букви S(пробіл), T(вкладка) та N(новий рядок) додаються лише як підкреслення.
[..._some_action]додано лише як пояснення.

Спробуйте в Інтернеті.

Програма в псевдокоді:

If the input is 9, 10 or 32: call function WHITESPACE()
Else-if the input is below 32: call function NONE()
Else-if the input is below 48: call function SYMBOL()
Else-if the input is below 58: call function DIGIT()
Else-if the input is below 65: call function SYMBOL()
Else-if the input is below 91: call function LETTER()
Else-if the input is below 97: call function SYMBOL()
Else-if the input is below 123: call function LETTER()
Else-if the input is below 127: call function SYMBOL()
Else (the input is 127 or higher): call function NONE()

WHITESPACE():
  Print 4
  Exit program
SYMBOL():
  Print 3
  Exit program
DIGIT():
  Print 2
  Exit program
LETTER():
  Print 1
  Exit program
NONE():
  Print 0
  (Implicit exit with error: Exit not defined)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.