ตั้งค่าสถานะตัวเข้ารหัสสัญญาณ


12

เป้าหมายของคุณคือการเขียนเข้ารหัสธงสัญญาณซึ่งจะแปลงเป็นประโยคให้เป็นตัวอักษรธงตรงกันสัญญาณให้สอดคล้องกับระบบสัญญาณที่อธิบายในวิกิพีเดีย

สมมติว่าอินพุตเป็นประโยคเดียวที่จัดเตรียมผ่าน stdin (หรือเทียบเท่า) เอาต์พุตของคุณควรเป็นชุดของเซมาฟอร์อักขระโดยแต่ละแถวแสดงถึงหนึ่งคำจากประโยค คุณต้องจัดการกับตัวอักษร (AZ) เท่านั้นและควรละเว้นอักขระที่ไม่ใช่ช่องว่างอื่น ๆ ทั้งหมด แต่คุณต้องสามารถจัดการได้ทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก การส่งออกของคุณได้รับอนุญาตให้มีช่องว่างพิเศษ

ตัวอักษรสัญญาณต้องแสดงเป็นตาราง 3x3 กับที่อยู่ตรงกลางและธงตำแหน่งแทนด้วยตัวอักษรO | - / \อักขระเซมาฟอร์แต่ละตัวจะต้องแยกจากอักขระที่อยู่ติดกันด้วยช่องว่างและแต่ละแถวต้องคั่นด้วยบรรทัดว่าง ไม่ต้องกังวลเกี่ยวกับการห่อคำที่อาจยาวเกินไปสำหรับการแสดงผลของคุณ - ทำเป็นว่าเส้นของคุณมีความยาวไม่ จำกัด

ตัวอย่างอินพุต:

abcdefg hijklmn opqrstu vwxyz

ตัวอย่างผลลัพธ์:

        \    |    /
 O  -O   O   O   O   O-  O
/|   |   |   |   |   |   |\

    \    |   |    /
-O   O   O-  O   O   O-  O
/   /       /   /   /   / \

\    |    /         \|  \ /
-O  -O  -O  -O- -O   O   O
                  \ 

 |    /   / \ 
 O   O-  O   O-  O-
  \       \       \

ตัวอย่างอินพุต:

This is Code Golf.

ตัวอย่างผลลัพธ์:

\|      \ 
 O  -O   O  -O 
    /   /     \

\      
 O  -O 
/     \

\   \    |    /
 O  -O   O   O 
 |       |   |

    \     /  
 O  -O   O   O-
 |\     /    |

ตั้งแต่นี้เป็นโซลูชั่นที่สั้นที่สุดชนะ


1
kolmogorov- ความซับซ้อน ? สำหรับฉันดูเหมือนว่านี่เป็นเรื่องพื้นฐานเกี่ยวกับการบีบอัดตารางการค้นหา
ปีเตอร์เทย์เลอร์

@ Peter เตอร์ใช่ใช่มันอาจเป็นความคิดที่ดีที่จะเพิ่มแท็กนั้น ขอบคุณ
migimaru

and each row must be separated by a blank line=> แต่ละคำมีความหมายใช่ไหม?
ผู้ใช้ไม่ทราบ

1
ก่อนที่ฉันจะอ่านปริศนานี้ฉันคิดผิดว่ามันเกี่ยวข้องกับเซมาฟอร์ในแง่การเขียนโปรแกรม ¡ Jajajajajja!
Thomas Eding

@ ผู้ใช้ที่ไม่รู้จักฉันใช้แถวที่นั่นเพื่ออ้างอิงแถวของอักขระเซมาฟอร์ บางทีการใช้คำแทนที่จะเป็นทางเลือกที่ดีกว่า
migimaru

คำตอบ:


5

Perl, 282 264 251 247 245 243 241 240 236 233 229 227 220 218 216 214 ตัวละคร

$_=lc<>;map{y/a-z//cd;y/a-z/`HABDP\xc0(!\x12"$0\xa0\t\n\f\30\x88\3\5\x82\24\x84\21\x90/;@a=($/)x4;map{$s=ord;$a[$_/3].=substr" \\|/-O-/|\\",$_==4||$s>>$_-($_>4)&1?$_+1:0,1for 0..8;$_.=" "for@a}split//;print@a}split

ด้วยตัวแบ่งบรรทัดที่น่าสนใจบางอย่าง:

$_=lc<>;
map{
y/a-z//cd;
y/a-z/`HABDP\xc0(!\x12"$0\xa0\t\n\f\30\x88\3\5\x82\24\x84\21\x90/;
@a=($/)x4;
map{
$s=ord;
$a[$_/3].=substr" \\|/-O-/|\\",$_==4||$s>>$_-($_>4)&1?$_+1:0,1for 0..8;
$_.=" "for@a
}split//;
print@a}split

ฉันใช้เวลาสักครู่ในการทำงานนี้ (ความพยายามครั้งแรกของฉันที่คำตอบ Perl) มันขึ้นอยู่กับแนวคิดที่คล้ายคลึงกับคำตอบอื่น ๆ มากมาย แต่ละธงสามารถอยู่ในหนึ่งใน 8 ตำแหน่งมีสองธงและสองธงไม่สามารถอยู่ในตำแหน่งเดียวกัน ซึ่งหมายความว่าฉันสามารถเข้ารหัสตำแหน่งของธงทั้งสองในหนึ่งไบต์ - ซึ่งหมายความว่าฉันสามารถแปลโดยตรงจากตัวละครเป็นการเข้ารหัสโดยใช้y///ฟังก์ชันของ Perl (ตัวดำเนินการ?) ดังนั้น:-

a = 01100000 96 = `
b = 01001000 72 = H
c = 01000001 65 = A
d = 01000010 66 = B
e = 01000100 68 = D
f = 01010000 80 = P
etc...

ดังนั้น:

y/a-z/`HABDP..../;

ฉันใช้อักขระบางตัวที่อยู่นอกช่วงการใช้งานปกติเพื่อทำให้การคัดลอกและวางโปรแกรมง่ายขึ้น - แต่ฉันค่อนข้างแน่ใจว่าฉันสามารถเขียนโปรแกรมเพื่อแทนที่รหัสหลบหนีด้วยอักขระที่ช่วยฉันได้ ประมาณ 30 ตัวอักษร


6

Python, 244 238 233 232

e='abhioptuwycdjmnsqxzfgvklebr'
for w in raw_input().split():
 for i in 0,3,6,9:print' '.join(''.join((' '+'\|/-O-/|\ '[j])[`j`in'4'+'6736031025071568328578162735'[e.find(c):][:2]]for j in range(i,9)[:3])for c in w if c.lower()in e)

วิธีนี้ใช้เคล็ดลับที่ฉันโปรดปราน: การเข้ารหัสแทร็กเดียว ฉันระบุป้ายเซมาฟอร์บิต (sbits)

\|/     012
- -  -> 3 5
/|\     678

เพื่อรับแผนภูมิต่อไปนี้ซึ่ง sbits เกิดขึ้นสำหรับตัวอักษรใด:

0: ciotuy
1: djkptv
2: elquwx
3: bhopqrs
5: fjmrwyz
6: ahiklmn
7: abcdefg
8: gnsvxz

ตัวอักษรแต่ละตัวเกิดขึ้นสองครั้งในแผนภูมิเนื่องจากผู้ส่งสัญญาณมีสองแขน จากนั้นฉันดูสิ่งนี้เป็นกราฟบนตัวอักษร az โดยมีขอบระหว่างตัวอักษรที่ใช้ร่วมกัน sbits กับขอบที่มีป้ายกำกับตามบิตที่ใช้ร่วมกัน โดยหลักการแล้วฉันจะพบเส้นทางแฮมิลตันผ่านกราฟนี้เพื่อให้ขอบที่ตามมาไม่มีป้ายกำกับเดียวกัน ไม่มีเส้นทางดังกล่าวอยู่ ... ดังนั้นคุณจะทราบว่าตัวแปรeมีตัวอักษรbสองครั้ง

มีเส้นทางเกือบแฮมิลตันของฉันeฉันสร้างอาร์เรย์dของป้าย SBIT eใช้ในการสำรวจเส้นทางของ จากนั้นเพื่อคิดออกว่าจะวางแขนของเธอได้อย่างไรคนส่งสัญญาณเพียงต้องการค้นหาตัวอักษรที่ต้องการในแผนภูมิที่มีประโยชน์ต่อไปนี้

abhioptuwycdjmnsqxzfgvklebr
6736031025071568328578162735

ซึ่งแขนของเธอไปในตำแหน่งด้านล่างโดยตรงและด้านล่างและด้านขวาของจดหมาย


ฉันไม่สามารถได้รับนี้ในการทำงานใน ideone จนกว่าฉันจะเปลี่ยนไปto_lower() lower()นอกจากนี้ยังมีข้อผิดพลาดเมื่อฉันพยายามให้อินพุตที่ไม่ใช่ตัวอักษร
migimaru

4

สกาลา, 272 ตัวอักษร

println(readLine.filter(c=>c.isLetter||c==' ').toLowerCase.split(" ").map{_.map(q=>("    O    "/:("^@a,6Tr?W*+5Sq9(2Pn%/-47MU"(q-'a')-27+""))((g,x)=>g.updated(x-'0',"\\|/-O-/|\\"(x-'0'))).grouped(3).toList).transpose.map(_.mkString(" ")).mkString("\n")}.mkString("\n\n"))

Ungolfed (ดีน้อยกว่า golfed):

println(
  readLine.filter(c => c.isLetter || c==' ').
  toLowerCase.
  split(" ").
  map{ s =>
    val lookup = "^@a,6Tr?W*+5Sq9(2Pn%/-47MU".map(c => (c-27).toString)
    s.map(q =>
      ("    O    " /: lookup(q-'a')){(g,x) => 
        g.updated(x-'0', "\\|/-O-/|\\"(x-'0'))
      }.grouped(3).toList
    ).transpose.map(_.mkString(" ")).mkString("\n")
  }.mkString("\n\n")
)

2

Ruby, 287 ตัวอักษร

gets.split.map{|w|puts (0..2).map{|l|w.chars.map{|c|(' '*576+'CAEAEADBCAF DAEBDACAAAI EAFADACAABG BAEAFEL A_ FACABADADAAG AAFBADQ AGX GAFADABAAAAF'.split.zip('\\|/-o-/|\\'.chars).map{|a,c|(a.chars.zip([' ',c]*9).map{|x,z|[z]*(x.ord-64)}.flatten)}.transpose*''*2)[c.ord*9+3*l,3]}*' '},''}

ต้องป้อนข้อมูลใน STDIN


1

Scala 494 ที่ไม่มีบรรทัดใหม่ 520 พร้อมบรรทัดใหม่:

def k(i:Int,d:Int=0):(Int,Int)=if(i<(7-d))(d,i+1)else k(i-(7-d),d+1)
def t(i:Char)=(if(i=='y')i-4 else
if(i=='z')i+2 else
if(i=='j')i+14 else
if(i>='v')i+3 else
if(i>'i')i-1 else i)-'a'
def q(p:(Int,Int),i:Int,c:Char)=if(p._1==i||p._1+p._2==i)""+c else" "
def g(r:Int,c:Char)={val p=k(t(c.toLower))
print((r match{case 1=>q(p,3,'\\')+q(p,4,'|')+q(p,5,'/')
case 2=>q(p,2,'-')+"o"+q(p,6,'-')
case 3=>q(p,1,'/')+q(p,0,'|')+q(p,7,'\\')})+" ")}
for(w<-readLine.split(" ")){println;for(r<-(1 to 3)){w.map(c=>g(r,c));println}}

ungolfed:

def toClock (i: Int, depth: Int=0) : (Int, Int) = {
  if (i < (7 - depth)) (depth, i+1) else toClock (i - (7-depth), depth + 1)}

def toIdx (i: Char) = {
 (if (i == 'y') i - 4  else 
  if (i == 'z') i + 2  else 
  if (i == 'j') i + 14 else 
  if (i >= 'v') i + 3 else 
  if (i > 'i') i - 1 else i ) - 'a'}

def p2c (pair: (Int, Int), i: Int, c: Char) = {
 if (pair._1 == i || pair._1 + pair._2 == i) ""+c else " "
}

def printGrid (row: Int, c: Char) = {
  val idx = toIdx (c.toLower)
  val pair = toClock (idx)
  row match {
    case 1 => { print(
      p2c (pair, 3, '\\') + 
      p2c (pair, 4, '|') + 
      p2c (pair, 5, '/') + " ")
    }
    case 2 => { print(
      p2c (pair, 2, '-') + "o" + 
      p2c (pair, 6, '-') + " ")
    }
    case 3 => { print(
      p2c (pair, 1, '/') + 
      p2c (pair, 0, '|') + 
      p2c (pair, 7, '\\') + " ")
    }
  }
}

val worte = "This is Code Golf"
(1 to 3).map (row => {worte.map (c => printGrid (row, c));println})

คำอธิบาย:

ฉันสังเกตรูปแบบนาฬิกา แต่ไม่ใช่กับ 12 ชั่วโมง แต่ 8 และเวลาเริ่มต้นคือ 0 คือเวลา 6 นาฬิกาและ a, b, c เป็นรหัสแรกโดยมีธงแรก (หนึ่ง) ทางทิศใต้

เนื่องจากการตั้งค่าสถานะ 1 และ 2 แยกไม่ออกเราจึงสามารถเรียงลำดับชุดค่าผสมทั้งหมดด้วยจำนวนที่ต่ำกว่าสำหรับค่าสถานะแรกก่อน แต่น่าเสียดายที่ลำดับที่ดีตั้งแต่ต้นถูกรบกวนเมื่อ j ไม่ได้ติดตามฉัน แต่ k, l, m และหลังจากนั้นมันก็ยุ่งเหยิง

ดังนั้นฉันจึงจัดเรียงแป้นสำหรับการแมปใหม่:

val iis = is.map {i => 
  if (i == 'y') i - 4  else 
  if (i == 'z') i + 2  else 
  if (i == 'j') i + 14 else 
  if (i >= 'v') i + 3 else 
  if (i > 'i') i - 1 else i }.map (_ - 'a')

iis.zipWithIndex .sortBy (_._1) .map (p => (p._1, ('a' + p._2).toChar))

Vector((97,a), (98, b), (99, c), (100,d), (101,e), (102,f), (103,g), 
      (104,h), (105,i), (106,k), (107,l), (108,m), (109,n), 
      (110,o), (111,p), (112,q), (113,r), (114,s), 
      (115,t), (116,u), (117,y), -------
      -------  (120,j), (121,v), 
      (122,w), (123,x), 
      (124,z))

ถ้าเราย่อตัวอักษร 'a' จากตัวละครทุกตัวเราจะได้ตัวเลขจาก (0 ถึง 7 + 6 + 5 + ... + 1) เราสามารถแมปตัวเลขของตารางตัวละคร

3 4 5   \ | /            |
2   6   - o -    - o   - o 
1 0 7   / | \    (2, ) (2,2)

คู่ของตัวเลขสองตัวสามารถจับคู่สองธงโดยที่หมายเลขแรกคือดัชนี 0 ถึง 6 สำหรับธงแรกและธงที่สองไม่ใช่หมายเลขจาก 1 ถึง 7 สำหรับธงที่สอง แต่สำหรับระยะทางจาก ธงแรกที่สอง (2,2) จะหมายถึงธงแรกคือ WEST และที่สองคือสองขั้นตอนตามเข็มนาฬิกาจากที่นั่นไปที่ NORTH

def toClock (i: Int, depth: Int=0) : (Int, Int) = {
  if (i < (7 - depth)) (depth, i+1) else toClock (i - (7-depth), depth + 1)}

Vector( (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), 
    (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), 
    (2,1), (2,2), (2,3), (2,4), (2,5), 
    (3,1), (3,2), (3,3), 
           (4,2), (4,3), 
    (5,1), (5,2), 
    (6,1))

ฉันไม่ค่อยรู้เรื่องสกาล่ามากนัก มีวิธีที่ฉันสามารถทดสอบนี้ใน ideone หรือไม่ ฉันลองปิดมันด้วยobject Main extends Applicationบล็อก แต่ดูเหมือนจะไม่เพียงพอ
migimaru

IDEONE ต้องการคลาสชื่อ Main ถ้าฉันจำอย่างถูกต้องเป็นวิธีการหลักควรขยาย App (สำหรับ scala-2.9 แทนที่จะเป็น Application (-2.8)) - และอ่านจาก stdin หรือไม่ ในSimplyscalaคุณสามารถทดสอบรหัสได้ง่ายขึ้น หากคุณแทนที่readLineในบรรทัดสุดท้ายด้วย"readLine"มันควรจะทำงาน (รหัสเข้ากันได้ 2.8)
ผู้ใช้ไม่รู้จัก

ขอบคุณ! ฉันไม่รู้เกี่ยวกับเรื่องเรียบง่ายซึ่งทำให้สิ่งต่าง ๆ ง่ายขึ้นมาก
migimaru

หากคุณต้องการลิงค์อีกครั้ง: ฉันได้ใส่ลิงค์ไปที่ไหนสักแห่งในเมตาดาต้าแล้ว
ผู้ใช้ไม่รู้จัก

สิ่งนี้จัดการกับตัวพิมพ์ใหญ่หรือไม่?
Thomas Eding

1

Haskell 331 357 339 ตัวอักษร

แข็งแรงเล่นกอล์ฟ:

import Data.Char
t[x,y]=q[x,mod(y+1)8]
q z@[x,y]|x==y=[x+1,y+2]|0<1=z
x%y=[x,y]
c 65=0%1
c 74=6%4
c 75=1%4
c 79=2%3
c 84=3%4
c 86=4%7
c 87=5%6
c 89=3%6
c 90=6%7
c x=t$c$pred x
_!9='O'
c!n|n`elem`c="|/-\\"!!mod n 4|0<1=' '
s x=do n<-[3:4%5,2:9%6,1:0%7];'\n':do c<-x;' ':map(c!)n
main=putStr.s.map(c.ord.toUpper)=<<getLine

Ungolfed:

type Clock = [Int]

tick :: Clock -> Clock
tick [h, m] = tick' [h, mod (m + 1) 8]

tick' :: Clock -> Clock
tick' [h, m]
  | h == m = [h + 1, m + 2]
  | otherwise = [h, m]

clock :: Char -> Clock
clock 'a' = [0,1]
clock 'j' = [6,4]
clock 'k' = [1,4]
clock 'o' = [2,3]
clock 't' = [3,4]
clock 'v' = [4,7]
clock 'w' = [5,6]
clock 'y' = [3,6]
clock 'z' = [6,7]
clock c = tick $ clock $ pred c

arm :: Int -> Char
arm 0 = '|'
arm 1 = '/'
arm 2 = '-'
arm 3 = '\\'

drawAt :: Clock -> Int -> Char
drawAt _ 9 = 'O'
drawAt c n = if n `elem` c
  then arm $ n `mod` 4
  else ' '

-- showClock is not in golfed code. Just there for debugging.
showClock :: Clock -> String
showClock c = unlines $ map (map $ drawAt c) [
    [3,4,5]
  , [2,9,6]
  , [1,0,7]
  ]

showClocks :: [Clock] -> String
showClocks cs = unlines $ map (showClocks' cs) [[3,4,5],[2,9,6],[1,0,7]]

showClocks' :: [Clock] -> [Int] -> String
showClocks' cs ns = cs >>= \c -> ' ' : map (drawAt c)

mainx :: IO ()
mainx = putStr . showClocks . map clock =<< getLine

345    \|/                                     \                      
2 6 == -O-          -O          tick  -O   ==   O      tick   O   ==  -O
107    /|\          /                 /        /              |\      /
             [1,2] or [2,1]    tick [1,2] == [1,3]     tick [0,7] == [1,2]

การเข้ารหัสเป็น[hour, minute]ที่ที่นาฬิกามีเวลา 8 ชั่วโมง 8 นาที นาทีเคลื่อนที่เร็วกว่าชั่วโมง หากนาฬิกาทำเครื่องหมายว่าจะให้ชั่วโมงและนาทีเท่ากันให้เพิ่ม 1 ถึงชั่วโมงและ 2 เป็นนาทีเช่นกัน (ดูตัวอย่างการทำเครื่องหมายที่สองด้านบน) นั่นเป็นวิธีเดียวที่จะเพิ่มชั่วโมง ชั่วโมงไม่เพิ่มขึ้นเมื่อนาทีถึงบางนาทีโดยพลการ เฉพาะเมื่อนาทีจะเท่ากับชั่วโมง ในโค้ดที่ไม่ได้รับการดัดแปลงให้clockเปลี่ยนตัวอักษรเป็นนาฬิกาที่เป็นตัวแทนของสัญญาณ นาฬิกาส่วนใหญ่สร้างขึ้นจากการฟ้องจากนาฬิกาก่อนหน้า ส่วนที่เหลือเป็นรหัสยาก ไม่มีอะไรมากไปกว่ารหัส


1

Perl, 356 , 275 ตัวอักษร

บันทึกจำนวนมากโดยการแทนที่ 'if else' เป็น ' :' การก่อสร้าง.

@_=split('', $ARGV[0]);for (@_){print eval{/[ciotuy]/ ?'\\':' '}.eval{/[djkptv]/ ?'|':' '}.eval{/[elquwx]/ ?'/':' '}."\n".eval{/[bhopqrs]/ ?'-':' '}."0".eval{/[fjmrwyz]/ ?'-':' '}."\n".eval{/[ahiklmn]/ ?'/':' '}.eval{/[abcdefg ]/ ?'|':' '}.eval{/[gnsvxz]/ ?'\\':' '."\n"};}

ดูเหมือนว่ารหัสของคุณจะทำงานเฉพาะกับตัวอักษรตัวพิมพ์เล็กเท่านั้น หากคุณใช้<>แทนคุณ$ARGV[0]สามารถใช้อินพุตจาก stdin และใช้lcเพื่อแปลงอักขระทั้งหมดเป็นตัวพิมพ์เล็ก สิ่งนี้มีประโยชน์เพิ่มเติมในการช่วยคุณประหยัด 4 ตัวอักษร มันไม่ได้จัดการกับอักขระที่ไม่ใช่ตัวอักษรอย่างใดอย่างหนึ่ง แต่เนื้อหาYou only need to deal with the alphabet (A-Z) and should ignore all other non-space charactersไม่ชัดเจนในสิ่งที่จะทำอย่างไรกับพวกเขา ...
แกเร็ ธ

ฉันไม่สามารถทดสอบรหัสได้ในขณะนี้ แต่ดูเหมือนว่ารหัสจะพิมพ์ช่องว่างสำหรับอักขระที่ไม่ใช่ตัวอักษรซึ่งไม่เป็นไร
migimaru

@migimaru ฉันจะพยายามแก้ไขให้ถูกต้อง
zura

@zura สามารถพิมพ์ช่องว่างสำหรับอักขระที่ไม่ใช่ตัวอักษรได้ คุณไม่จำเป็นต้องแก้ไข
migimaru

0

PowerShell , 198 192 191 188 ไบต์

-split$args|%{$s=$_
"\|/ ciotuy djkptv elquwx","-O- bho-s ^ fjmrwyz","/|\ ahik-n a-g gnsvxz"|%{$f,$p=-split$_
($s|% t*y|%{$c=$_
-join(&{$p|%{" $f"[++$i*($c-match"[$_ ]")]}})})-join' '}
''}

ลองออนไลน์!

เอาต์พุตมีบรรทัดว่างหนึ่งหาง

หักกอล์ฟ:

-split$args|%{
    $string=$_
    "\|/ ciotuy djkptv elquwx",
    "-O- bho-s ^ fjmrwyz",
    "/|\ ahik-n a-g gnsvxz"|%{
        $flags,$patterns=-split$_
        $row=$string|% toCharArray|%{
            $char=$_
            $semaphoreRow=&{   # call the scriptblock in a new scope to reinit $i
                $patterns|%{
                    " $flags"[++$i*($char-match"[$_ ]")]  # return a flag symbol
                }
            }
            -join($semaphoreRow)
        }
        $row-join' '
    }
    ''
}

0

ถ่าน 70 ไบต์

F⪪↧S «Fι«F⪪”↶↖→∧gτ→|⮌!⧴KD✂‖5»⊞H⭆K↧ⅉ&$↥x-#↖x9|²λPe⁸” «P⊗№λκ↷¹»oM³→»⸿M³↓

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

F⪪↧S «

แยกอินพุตล่างบนช่องว่างและวนซ้ำแต่ละคำ

Fι«

วนรอบตัวละครแต่ละตัว

F⪪”↶↖→∧gτ→|⮌!⧴KD✂‖5»⊞H⭆K↧ⅉ&$↥x-#↖x9|²λPe⁸” «

แยกสตริงที่บีบอัดfjmrwyz gnsvxz abcdefg ahiklmn bhopqrs ciotuy djkptv elquwxบนช่องว่างและวนรอบกลุ่มจดหมายแต่ละกลุ่ม

P⊗№λκ

หากกลุ่มมีตัวอักษรปัจจุบันให้วาดเส้นในทิศทางปัจจุบัน

↷¹»

หมุนตามเข็มนาฬิกา 45 °

oM³→»

เอาท์พุทตรงกลางoแล้วเลื่อนไปที่ตำแหน่งของตัวอักษรถัดไป

⸿M³↓

ย้ายไปยังจุดเริ่มต้นของคำถัดไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.