Harf, Sayı, Sembol, Boşluk, Tekrar


35

İnsanların düzenli olarak karşılaştıkları 97 ASCII karakteri var. Dört kategoriye ayrılırlar:

  1. Harfler (toplam 52)

    ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    
  2. Rakamlar veya Rakamlar (toplam 10)

    0123456789
    
  3. Semboller ve Noktalama işaretleri (toplam 32)

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

    Boşluk , sekme \tve yeni satır \n. (Yeni satır değişkenlerini \r\nbir karakter gibi ele alırız .)

Kısaca, sırasıyla bu kategorilere L, N, S ve W diyeceğiz.

İstediğiniz harflerin 24 permütasyonundan birini seçin LNSWve kendiniz için bir programlama şablonu oluşturmak için süresiz olarak tekrarlayın.

Örneğin, permütasyonu seçebilirsiniz NLWS, böylece programlama şablonunuz şöyle olacaktır:

NLWSNLWSNLWSNLWSNLWS...

Bu şablonu temel alan bir program veya işlev yazmanız gerekir, burada:

  1. Her Lbiri herhangi bir harfle ( ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz) değiştirilir.

  2. Her Nbiri herhangi bir sayı ( 0123456789) ile değiştirilir .

  3. Her Sbiri herhangi bir sembolle ( !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~) değiştirilir.

  4. Her Wbiri herhangi bir boşluk karakteri ( \t\n) ile değiştirilir .

Temel olarak, kodunuz modeli takip etmelidir

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

soru başlığının önerdiği gibi, isterseniz dört karakter kategorisinden farklı bir sıralama seçebilirsiniz.

Bunu not et:

  • Bir kategori için değiştirmeler farklı karakterler olabilir. örneğin 9a ^8B\t~7c\n]geçerli olarak şablona uygun NLWSNLWSNLWS( \tve \nonların gerçek karakterleri olacaktır).

  • Kod uzunluğu kısıtlaması yoktur. örneğin 1A +2B -ve 1A +2Bve 1A ve 1hepsi şablona uygundur NLWSNLWSNLWS....

Şablonla uyumlu kodunuzun yapması gereken , tek bir ASCII karakterinde yer almak ve yukarıdaki kategorideki hangi kategoriye üye olduğuna bağlı olarak 0 ile 4 arasında bir sayı çıkarmak. Yani, 1eğer girdi bir harfse, 2bir sayı, 3bir sembol, ve 4boşluk ise çıktı. 0Giriş bunların hiçbiri değilse çıkış ( kontrol karakteri ).

Giriş için, alternatif olarak giriş ASCII karakterinin kodunu temsil eden 0 ila 127 arasında bir sayı alabilirsiniz.

Giriş (karakter kodu olarak) ve çıkış çiftleri, kodunuzun sahip olması gereken tam olarak aşağıdaki gibidir:

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

Girişler 11, 12, ve karakterlerin 13 tekabül bazen boşluk kabul böylece onların çıkışları olabilir 0veya 4istediğiniz gibi.

Bayt cinsinden en kısa kod kazanır.


5
2d dilinde ilk cevaba Çerezler.
Calvin'in Hobileri

2
Yani sadece BF kullanın ve SSSS harflerini kullanın
Christopher

2
Bu temelde tüm geleneksel programlama dillerini dışlar 🙄 Ayrıca, kendi kod sayfasını kullanan dillerle ne yapmalı, örneğin Jelly?
kennytm

1
Diğer karakterlere izin verilmez.
Calvin'in Hobileri

2
Unary kazanacak!
Christopher,

Yanıtlar:


38

Haskell 300 bayt

Bu kodun sonunda yeni bir satır yok. İşlev m1girişi a olarak alır Charve cevabı a olarak döndürür 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 "

Birinin "geleneksel" diller için imkansız olduğunu iddia ettiği bir mücadeleye karşı koyamadım.

Haskell'in önemli olup olmadığını tartışabilirsiniz, ancak anahtar kelimelerin ve tanımlayıcıların çoğu birden çok karakterdir ve kullanılamaz. Bununla birlikte, üst düzey işlevi tanımlar, listeler, dize hazır, sıkı karşılaştırmalar, desen eşleştirme ve gardiyanlar çalışma ile dallanma sürece harfler sadece rakamdan önce gelir ve semboller de harflerden önce sadece gelirlerse gibi kaçış karakterler var \tve \r. Ne yazık ki, genel programlama için çalışan izinler sayısal değişmezlere izin vermez, bu yüzden sayıları hiçbir şekilde faydalı alamadım.

Nasıl çalışır:

  • Karakter sınıflarının aralıkları, son satırdaki dizgede, sembol yerlerinin çoğunda sınır karakterleri ve rakamların çoğunda sonuçların bir kısmı dolgulu olmasına rağmen kodlanan karakterlerle kodlanır.
  • Ana işlevi m1.
  • x1 analiz edilen karakter.
  • f1Fonksiyon listesi desen eşleştirme ile dizeyi kırar ve üç şubesi: sınırları semboller alandan daha büyük olduğunda için, alandan daha ve kendisini boşluğa nihai karşılaştırma işlemek için küçük sınırlar öncelenir kontrol karakterleri için. Liste parçalarının adları ilk dal için hatırlatıcıdır: Harf, Sayı, sPace, sYmbol, Remainder.
  • b1İki sınır karakterler için dallanma fonksiyon kolları s1 < b1bir anda.

Çevrimiçi deneyin


1
Siteye Hoşgeldiniz! Tahminimce bu gerekli sonucu elde edebilecek geleneksel olmayan dillerden daha kısa olacak.
Jonathan Allan,

Gret cevap! Haskell'i kullanmayı denedim ama kısa bir süre sonra
pes ettim

14

Retina , 113 bayt

Harf, Sayı, Boşluk, Sembol, Tekrarla

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

Çevrimiçi deneyin!

Kendinde test et!

Retina bu iş için güzel bir araç gibi gözüküyor: sahne konfigürasyonunda her türlü karakteri esnek bir şekilde kullanabiliriz ve faydalı olabilecek önceden tanımlanmış bazı karakter sınıflarımız vardır.

Bu sorunun ya Değiştirme aşamaları ya da Harf çevirisi aşamalarıyla çözülebileceğini düşünüyorum; Transliterasyonları seçtim çünkü daha esnekler ve en kullanışlı karakter sınıflarına sahipler. Kaynağın düzeniyle ilgili olarak \n, yeni satırlar için kullanmak üzere harflerin hemen önüne semboller koymak zorunda kaldım (aslında yeni satırlar için practical yöntemini kullanan daha kısa bir çözümüm vardı, ancak asi olmayan karakterler yasaklandı).

açıklama

İlk aşamalar harf çevirisidir. Deseni devam ettirmek için +ve 1seçenekler olarak kullanırız , ancak sahnenin sonucunu etkilemezler. Sözdizimi, T`from`tokarakterin her karakterini fromaynı konumda bulunan karakterle eşlemektir to. Eğer todaha kısa ise from, son karakteri gerektiği kadar tekrarlanır. fromTekrarlanan karakterleri varsa , her birinin yalnızca ilk oluşu göz önünde bulundurulur. Bazı harfler karakter sınıflarına karşılık gelir, örneğin deşittir 0123456789.

T1 `a0 @a0 `b   :D0

Bununla birlikte, harfleri takip etmek için "yer açmak" için bazı karakterleri aynı sınıftaki diğer karakterlerle eşleştiriyoruz. ( a-> b, 0-> 1, space-> tab, @-> ;). Final :D0sadece bir surat: D0

+T1 `d9 `a2

Rakamlarla başlıyoruz d, karakter sınıfıdır 0-9, burada dönüştürüyoruz 0-> a, 1-9-> 2, space-> 2: çevirisi 0ve spaceyanlışı, ancak bu karakterler önceki çevirisi tarafından elimine edildi.

+T1 `a9 \n9 `a4

Boşluk, dönüşümü a-> a, ( 9, tab, \n, space) -> 4. 9önceki aşamada zaten kaldırıldı.

+T1 `l9 @L9 `a1

Harfler, burada iki farklı karakter sınıfı kullanıyoruz (daha eksiksiz bir tane olmaması için): lküçük harfler ve Lbüyük harfler için. Hepsi 1önceki aşamalarda ele alınan diğer bazı karakterlerle birlikte eşleştirilir

+T1 `d9 @p9 `d3

Semboller. Diğer tüm sınıflar bir basamağa çevrildiğinden, burada tüm basamağı d-> dile ve sonra tüm basılabilir karakterleri -> 3ile eşleriz . Rakamlar da basılabilir karakterler arasındadır, ancak ilk harf çevirisi kazanır.p3

Şimdi 0karakterleri kontrol etmek için atamamız gerekiyor , ancak açıkça o sınıfı ele almak için geçerli bir yol bulamadım. Bunun yerine, her bir basamağı birliğe çeviririz: kontrol karakterleri rakam değildir ve bu nedenle 0birleşik olarak eşit olan boş dize olarak kabul edilirler . Ne yazık ki, retinadaki unary dönüşüm komutu, $*birbirine yakın iki semboldür, bu yüzden yerine "elle" çeviririz.

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

Unary rakamımız $n, yeni hatların yerine geçen bir kalıptır. \balfasayısal bir kelimenin başladığı veya bittiği bir "sınır" ile eşleşir: bu bizim durumumuzda her zaman herhangi bir sayıdan önce eşleşir. Temel olarak her numarayı nbir yeni satır artıyla değiştiriyoruz n-1.

\n

Sonunda, yeni satır sayısını sayar ve istenen sonucu elde ederiz.


11

Kardinal 2240 2224 bayt

Şablon kullanılmış 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

Kodun sonunda yeni bir satır var.

Nasıl çalışır:

Bu kod kullanılmayan birçok karakter içeriyor.
% her yöne bir işaretçi serbest bırakır. Üçü sadece çizginin sonuna çarpıp ölüyor.
Son işaretçi şu girişte bir girdi alır:
Bu girdi daha sonra 0 ile 127 arasındaki her değerle karşılaştırılır.

Baskılar:
0 için 0-8
4, 9-12 için
0 13-31 için
4 32-3 için 3
33-47
2 için 48-57
3 için 58-64
1 için 65-90
3 için 91-96
1 için 97-122
123-126
için 3, 127 için 0

Kullanılan işlemler:
J = Sıfır olmadığında bir sonraki işlemi atla
^ = Yönü yukarı
değiştir> = Yönü sola değiştir
- = Düşüş
+ = Artış
: = Giriş al
% = Program başlangıcında işaretçi oluştur
x = İşaretçiyi kaldır
0 = Etkinleştir işaretçinin değeri 0

Çevrimiçi deneyin


7

Perl 5 , 293 bayt

291 bayt kodu + 2 için -0p.

Komut satırı bayraklarının ücretsiz olduğu bildirildi, ancak -0daha kolay test için TIO bağlantısının içermediği için onları buraya görünürlük için ekledim .

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

Çevrimiçi deneyin!

Bu, hemen hemen her dilde çözmek için özellikle zor bir iştir, bu yüzden Perl'de çalıştığım için (sonunda, uzunca bir süre kalacağım bir sürü oynamaya başladım) çok mutluyum. Umarım, numaradan önceki ve sonraki boşluklar bir sorun değildir.

Sırasını seçme forunately özellikle zor ama oldu s///ve y///o izin verir mektup, uzay, sayı, sembol, kullanmak mümkün oldu sınırlayıcı olarak başka bir karakter kabul edebilir s 0...0...0;ve y 0...0...0;.

Appraoch için gerekli ilk şey değiştirmekti _ile !böylece \wsadece eşleşir [0-9a-zA-Z](daha sonra tüm boşluk değiştirin \s) ile \tbirlikte tüm basamaklar, \rve kalan tüm kelime karakter ( \wile) \nkolay eşleşmesi için daha sonra. Sonra kullanarak y///operatörü, geri kalan tüm semboller kelime karakterlere dönüştürülür !için _ve tüm diğer karakter arasında ( 9ve aharfler veya sayılar dönüştürerek), 9 yerlerde aşağı kaydırılır. Bunlar daha sonra değiştirilir, \wile 3ve diğer, daha önce yapılan sübstitüsyonlar da numaralı değerlerle değiştirilir.


1

Boşluk , 1332 bayt

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

Sıra 1234/ LNSW(harf, rakam, sembol, boşluk).

Çevrimiçi deneyin (bir karakterin tek kodunu temsil eden tamsayı olarak girin).

Açıklama:

Boşluk, boşluklar, sekmeler ve yeni satırlar dışındaki her karakterin yok sayıldığı yığın tabanlı bir dildir. İşte YO!( 333 bayt ) olmadan aynı program :

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

Harfler S(boşluk), T(sekme) ve N(yeni satır) yalnızca vurgulama olarak eklenmiştir.
[..._some_action]sadece açıklama olarak eklendi.

Çevrimiçi deneyin.

Sözde koddaki program:

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.