문자, 숫자, 기호, 공간, 반복


35

사람들이 정기적으로 만나는 ASCII 문자 는 97 개 입니다. 그들은 네 가지 범주로 나뉩니다.

  1. 편지 (총 52 개)

    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    
  2. 숫자 또는 숫자 (총 10 개)

    0123456789
    
  3. 기호 및 문장 부호 (총 32 개)

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

    공백 , 탭 \t및 줄 바꿈 \n. (개행 변형 \r\n을 하나의 문자 처럼 취급 합니다.)

간결성을 위해 이러한 범주를 각각 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 -1A +2B1A 1모든 템플릿에 적합 NLWSNLWSNLWS....

템플릿에 맞는 코드가 수행해야하는 것은 확장되지 않은 ASCII 문자 하나를 가져 와서 위의 분류에서 구성원이 속한 범주에 따라 0에서 4까지의 숫자를 출력하는 것입니다. 즉, 1입력이 문자, 2숫자, 3기호 및 4공백이면 출력됩니다. 0입력이이 중 어느 것도 아닌 경우 출력 합니다 ( 제어 문자 ).

입력의 경우 입력 ASCII 문자의 코드를 나타내는 0에서 127까지의 숫자를 사용할 수도 있습니다.

코드에 포함 된 입력 (문자 코드) 및 출력 쌍은 다음과 같습니다.

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 언어로 된 첫 번째 답변에 대한 쿠키.
Calvin 's Hobbies

2
BF와 SSSS 문자를 사용하십시오
Christopher

2
이것은 기본적으로 모든 기존의 프로그래밍 언어를 배제했습니다. 또한 자체 코드 페이지를 사용하는 언어 (예 : Jelly)와는 어떻게해야합니까?
kennytm

1
다른 문자는 허용되지 않습니다.
Calvin 's Hobbies

2
단항 승리!
Christopher

답변:


38

하스켈 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 "

누군가가 "기존의"언어로는 불가능하다고 주장한 도전에 저항 할 수 없었습니다.

하스켈의 수에 대해서는 논란의 여지가 있지만 대부분의 키워드와 식별자는 여러 문자이므로 사용할 수 없습니다. 그러나 문자가 숫자 바로 앞에 오는 한 최상위 수준 함수 정의, 목록, 문자열 리터럴, 엄격한 비교, 패턴 일치 및 가드가있는 분기가 작동하고 기호가 문자 바로 앞에 오는 경우 \tand와 같은 문자가 이스케이프 \r됩니다. 불행히도 일반 프로그래밍에서 작동하는 순열은 숫자 리터럴을 허용하지 않으므로 유용한 방법으로 숫자를 얻을 수 없습니다.

작동 방식 :

  • 문자 클래스의 간격은 마지막 행의 문자열로 인코딩되며 끝 부분의 일부는 채워지더라도 대부분의 기호 위치에 경계 문자와 대부분의 숫자 자리에 결과가 표시됩니다.
  • 주요 기능은 m1입니다.
  • x1 분석되는 캐릭터입니다.
  • f1함수는리스트 패턴 일치를 사용하여 문자열을 분할하고 세 가지 분기를 갖습니다. 경계가 공간보다 큰 기호 인 경우, 경계가 이스케이프 된 경우, 공백보다 작은 제어 문자 및 공백 자체에 대한 최종 비교를 처리합니다. 목록 조각의 이름은 첫 번째 분기에 대한 니모닉입니다 : Letter, Number, sPace, sYmbol, Remainder.
  • b1함수는 s1 < b1한 번 에 두 개의 경계 문자 에 대한 분기를 처리합니다 .

온라인으로 사용해보십시오


1
사이트에 오신 것을 환영합니다! 내 생각에 이것은 실제로 필요한 결과를 얻을 수있는 대부분의 비 전통적인 언어보다 짧을 것입니다.
Jonathan Allan

그레트 대답! 나는 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-> b, 0-> 1, space-> tab, @-> ;). 결승전 :D0은 단지 스마일 : D0

+T1 `d9 `a2

우리는 숫자로 시작 d하는 문자 클래스입니다 0-9우리가 여기있는 거 변형 0-> a, 1-9-> 2, space-> 2:의 음역이 0space잘못,하지만 그 문자 이전의 음역에 의해 제거되었다.

+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로, 다음 모든 인쇄 가능한 문자 3p-> 3. 숫자도 인쇄 가능한 문자 중 하나이지만 첫 음역이 우선합니다.

이제 0제어 문자 를 할당해야 하지만 해당 클래스를 명시 적으로 처리하는 올바른 방법을 찾지 못했습니다. 대신 각 숫자를 단항으로 변환합니다. 제어 문자는 숫자가 아니므로 단항과 동일한 빈 문자열로 간주됩니다 0. 불행히도, retina의 단항 변환 명령은 $*서로 가까이있는 두 개의 기호이므로 대체를 사용하여 "수동으로"변환합니다.

\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
97-122 1
123-126의 경우 3,
127의 경우 0

사용 된 작업 :
J = 0이 아닌 경우 다음 작업 건너 뛰기
^ = 방향을 위로
변경> = 방향을 왼쪽으로 변경
-= 감소
+ = 증분
: = 입력
% = 프로그램 시작시 포인터 만들기
x = 포인터
0 제거 = 활성 설정 0에 대한 포인터 값

온라인으로 사용해보십시오


7

펄 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

온라인으로 사용해보십시오!

이것은 거의 모든 언어로 해결하기가 특히 까다로운 과제이므로 펄에서이 작업을 수행 할 수있어서 매우 기쁩니다. 숫자 앞뒤의 추가 공백이 문제가되지 않기를 바랍니다.

시퀀스 순서를 선택하면 forunately 특히 까다로운하지만이었다 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 자리 아래로 이동하여 문자 나 숫자로 바뀝니다. 이들은 다음을 통해 대체 \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 bytes )가 없는 동일한 프로그램입니다 .

[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.