定期的に遭遇するASCII文字は97個あります。それらは4つのカテゴリに分類されます。
レター(合計52)
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
数字または数字(合計10)
0123456789
記号と句読点(合計32)
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
空白(合計3)
スペース
\t
、および改行\n
。(改行バリアント\r\n
は1文字として扱います。)
簡潔にするために、これらのカテゴリをそれぞれL、N、S、Wと呼びます。
LNSW
希望する文字の24の順列のいずれかを選択し、無制限に繰り返して自分用のプログラミングテンプレートを作成します。
たとえば、順列を選択するとNLWS
、プログラミングテンプレートは次のようになります。
NLWSNLWSNLWSNLWSNLWS...
このテンプレートに基づいてプログラムまたは関数を作成する必要があります。
すべて
L
が任意の文字(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
)に置き換えられます。すべて
N
が任意の数字(0123456789
)に置き換えられます。すべて
S
が任意の記号(!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
)に置き換えられます。すべて
W
が空白文字(\t\n
)に置き換えられます。
基本的に、コードはパターンに従う必要があります
<letter><number><symbol><whitespace><letter><number><symbol><whitespace>...
質問のタイトルが示すように、必要に応じて、4つの文字カテゴリの異なる順序を選択できます。
ご了承ください:
カテゴリの置換には異なる文字を使用できます。例えば、
9a ^8B\t~7c\n]
正当テンプレートに準拠NLWSNLWSNLWS
(\t
および\n
そのリテラル文字になります)。コード長の制限はありません。例えば
1A +2B -
and1A +2B
および1A
and1
allはテンプレートに適合し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
希望どおりになります。
バイト単位の最短コードが優先されます。