文字、数字、記号、スペース、繰り返し


36

定期的に遭遇するASCII文字は97個あります。それらは4つのカテゴリに分類されます。

  1. レター(合計52)

    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    
  2. 数字または数字(合計10)

    0123456789
    
  3. 記号と句読点(合計32)

    !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
    
  4. 空白(合計3)

    スペース 、タブ\t、および改行\n。(改行バリアント\r\nは1文字として扱います。)

簡潔にするために、これらのカテゴリをそれぞれL、N、S、Wと呼びます。

LNSW希望する文字の24の順列のいずれかを選択し、無制限に繰り返して自分用のプログラミングテンプレートを作成します。

たとえば、順列を選択するとNLWS、プログラミングテンプレートは次のようになります。

NLWSNLWSNLWSNLWSNLWS...

このテンプレートに基づいてプログラムまたは関数を作成する必要があります。

  1. すべてLが任意の文字(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz)に置き換えられます。

  2. すべてNが任意の数字(0123456789)に置き換えられます。

  3. すべてSが任意の記号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)に置き換えられます。

  4. すべてWが空白文字( \t\n)に置き換えられます。

基本的に、コードはパターンに従う必要があります

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

質問のタイトルが示すように、必要に応じて、4つの文字カテゴリの異なる順序を選択できます。

ご了承ください:

  • カテゴリの置換には異なる文字を使用できます。例えば、9a ^8B\t~7c\n]正当テンプレートに準拠NLWSNLWSNLWS\tおよび\nそのリテラル文字になります)。

  • コード長の制限はありません。例えば1A +2B -and 1A +2Bおよび1A and 1allはテンプレートに適合しNLWSNLWSNLWS...ます。

テンプレートに準拠したコードは、拡張されていないASCII文字を1つ受け取り、上記の分類のメンバーであるカテゴリに基づいて0〜4の数値を出力する必要があります。つまり1、入力が文字の2場合、数字の3場合、記号の4場合、空白の場合に出力されます。出力0の入力は、これらのどれも(ない場合は制御文字)。

入力の場合、代わりに、入力ASCII文字のコードを表す0から127までの数字を入力できます。

コードに必要な入力(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
2D言語での最初の回答へのCookie。
カルビンの趣味

2
したがって、BFを使用し、SSSSの文字を使用してください
クリストファー

2
これは基本的に、すべての従来のプログラミング言語を除外しました
ケニートム

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がカウントするかどうかに異議を唱えるかもしれませんが、キーワードと識別子の大部分は複数の文字であり、使用できません。ただし、最上位レベルの関数定義、リスト、文字列リテラル、厳密な比較、パターンマッチング、ガード付き分岐は、文字が数字の直前にあり、記号が文字の直前にある場合、andなどのエスケープ文字があれば機能\t\rます。残念ながら、一般的なプログラミングで機能する順列では数値リテラルを使用できないため、有用な方法で数値を取得できませんでした。

使い方:

  • 文字クラスの間隔は、最後の行の文字列にエンコードされ、ほとんどのシンボル位置に境界文字があり、ほとんどの桁位置に結果がありますが、末尾の一部はパディングです。
  • 主な機能はm1です。
  • x1 分析中のキャラクターです。
  • このf1関数は、リストパターンマッチングで文字列を分割し、境界がスペースより大きいシンボルの場合、境界がスペースより小さい制御文字をエスケープする場合、およびスペース自体との最終比較を処理するための3つのブランチを持っています。リストピースの名前は、最初のブランチのニーモニックです:Letter、Number、sPace、sYmbol、Remainder。
  • このb1関数はs1 < b1、一度に2つの境界文字の分岐を処理します。

オンラインで試す


1
サイトへようこそ!私の推測では、これは実際に必要な結果を達成できるほとんどの非従来型の言語よりも短くなります。
ジョナサンアラン

残念な答え!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、改行に使用するために文字の直前に記号を配置することを余儀なくされました(実際には、改行用のより実用的な¶を使用する短いソリューションがありましたが、非ASCII文字は禁止されています)。

説明

最初の段階は音訳です。パターンを継続するオプションとして+およびを使用1しますが、ステージの結果には影響しません。構文はT`from`to、の各文字をfromの同じ位置にある文字にマッピングしtoます。場合toよりも短くなってfrom、必要に応じて、その最後の文字は限り繰り返されます。from繰り返し文字がある場合、各文字の最初の出現のみが考慮されます。いくつかの文字は、文字クラスに対応しdてい0123456789ます。たとえば、と同等です。

T1 `a0 @a0 `b   :D0

これを使用して、一部の文字を同じクラスの他の文字にマッピングして、次の音訳に「余裕を持たせる」ようにします。(a-> b0-> 1space-> tab@-> ;)。決勝:D0はただのスマイリーです:D0

+T1 `d9 `a2

私たちは、数字で始まり、d文字クラスがされ0-9、ここで我々している変換0- > a1-9- > 2space- > 2:のための音訳0space間違っているが、これらの文字は、前の音訳で排除されています。

+T1 `a9 \n9 `a4

空白、変換a- > a、( 、9tab\nspace - > 49前の段階で既に削除されていました。

+T1 `l9 @L9 `a1

文字、ここでは2つの異なる文字クラスを使用します(より完全な文字クラスがないため)。l小文字とL大文字の2つです。これらはすべて1、前の段階で処理された他のキャラクターとともににマッピングされます

+T1 `d9 @p9 `d3

シンボル。他のすべてのクラスが数字になってきたので、ここでは、と自分自身にすべての桁をマップd> - dにして、すべての印刷可能文字3p- > 3。数字も印刷可能な文字の1つですが、最初の音訳が優先されます。

ここで0、制御文字に割り当てる必要がありますが、そのクラスを明示的に指定する有効な方法は見つかりませんでした。代わりに、各桁を単項に変換します。制御文字は数字ではないため、空の文字列と見なされ0、単項に等しくなります。残念ながら、Retinaの単項変換コマンドはです$*。これらは互いに2つのシンボルであるため、代わりに置換を使用して「手動で」変換します。

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

単項数字は$n、改行の置換パターンです。\b英数字の単語が開始または終了する「境界」に一致します。この例では、これは常に数字の前に一致します。基本的に、各番号nを改行プラスに置き換えていますn-1

\n

最後に、改行の数をカウントし、目的の結果を取得します。


11

Cardinal 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-8 0
9-12 4
13-31 0
32 4
33-47 3
48-57 2
58-64 3
65-90 1
91-96 3
1 97から122のための
123-126の場合3
0

使用される操作:
J =ゼロ以外の場合、次の操作をスキップ
^ =方向を上に
変更> =方向を左に変更
-=減少
+ =増分
:=入力を取得
%=プログラムの開始時にポインターを作成
x =ポインターを削除
0 =アクティブに設定0へのポインターの値

オンラインで試す


7

Perl 5、293バイト

291バイトコード+ -0p

コマンドラインフラグは無料であるとアドバイスされていますが-0、テストを容易にするために、TIOリンクにはが含まれていないため、ここに表示します。

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でこれを機能させることができた(最終的にはかなりの時間をかけて何度もいじくり回した)ことができてとてもうれしいです。願わくば、数字の前後にある追加の空白が問題にならないことを願っています。

シーケンスの順序は特にトリッキーが、forunatelyた選択s///y///を可能にし、文字を使用することが可能であったので、区切り文字として他の文字を受け入れることができ、スペース、数字、記号、s 0...0...0;およびy 0...0...0;

アプローチに最初に必要なのは、のみに一致_する!ように置き換えてから、すべての空白()を、すべての数字をすべての残りの単語文字()に置き換えて、後で簡単に一致させることです。次に、使用してオペレータを、残りのすべてのシンボルが単語文字に変換されるまで、他のすべての文字(間と文字または数字にそれらを回す)、9箇所シフトダウンされます。次に、これらを経由して交換されると、その他、以前に作られた置換は、その番号を付けた値に置き換えられます。\w[0-9a-zA-Z]\s\t\r\w\ny///!_9a\w3


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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.