• Source
    1. def decode(s)
    2. r=""
    3. if (s.length % 2 == 1) then
    4. return "X"
    5. end
    6.  
    7. p = ""
    8. s.scan(/.{2}/).each {|c|
    9. if (p[0] == c[0] && p[1] != "z") then
    10. return "X"
    11. end
    12. r += c[0] * (c[1].ord-0x60)
    13. p = c
    14. }
    15. return r
    16. end
    17.  
    18. def encode(s)
    19. r=""
    20. s.chars.chunk{|c|c}.each{|k,v|
    21. n=v.length
    22. while(n>26)
    23. r+=k+'z'
    24. n-=26
    25. end
    26. r+=k+(n+0x60).chr
    27. }
    28. return r
    29. end
    30.  
    31. def encodeHttp(s)
    32. require 'net/http'
    33. sleep 1
    34. return Net::HTTP.get('spacetalky.textfile.org','/api.cgi?input='+s)
    35. end
    36.  
    37. words = """accept
    38. add
    39. advise
    40. afford
    41. agree
    42. alert
    43. analyse
    44. announce
    45. answer
    46. appear
    47. arrange
    48. arrive
    49. ask
    50. attach
    51. attack
    52. attempt
    53. attend
    54. attract
    55. avoid
    56. awake
    57. back
    58. bake
    59. balance
    60. ban
    61. bang
    62. bat
    63. bathe
    64. battle
    65. be
    66. beam
    67. behave
    68. bleach
    69. bless
    70. blind
    71. blow
    72. blush
    73. boast
    74. boil
    75. bolt
    76. bomb
    77. book
    78. bore
    79. borrow
    80. bounce
    81. bow
    82. brake
    83. breathe
    84. broadcast
    85. bruise
    86. brush
    87. bump
    88. bury
    89. buzz
    90. calculate
    91. call
    92. carry
    93. carve
    94. cause
    95. challenge
    96. change
    97. charge
    98. chase
    99. cheat
    100. check
    101. chew
    102. chop
    103. clean
    104. clear
    105. clip
    106. close
    107. coach
    108. coil
    109. collect
    110. colour
    111. comb
    112. command
    113. communicate
    114. compare
    115. compete
    116. complete
    117. concentrate
    118. concern
    119. confess
    120. consider
    121. consist
    122. contain
    123. continue
    124. correct
    125. cough
    126. count
    127. cover
    128. crack
    129. crash
    130. cross
    131. crush
    132. cry
    133. cure
    134. curl
    135. curve
    136. cycle
    137. dam
    138. damage
    139. dare
    140. deceive
    141. decide
    142. decorate
    143. delay
    144. delight
    145. deliver
    146. depend
    147. describe
    148. deserve
    149. destroy
    150. develop
    151. disappear
    152. disapprove
    153. disarm
    154. discover
    155. dislike
    156. divide
    157. double
    158. doubt
    159. drain
    160. draw
    161. dream
    162. drive
    163. drop
    164. drown
    165. drum
    166. dry
    167. dust
    168. embarrass
    169. employ
    170. empty
    171. encourage
    172. end
    173. enjoy
    174. enter
    175. escape
    176. examine
    177. excite
    178. excuse
    179. exercise
    180. exist
    181. expand
    182. expect
    183. explain
    184. explode
    185. extend
    186. fade
    187. fail
    188. fancy
    189. fasten
    190. fear
    191. feel
    192. fence
    193. fight
    194. file
    195. find
    196. fit
    197. flap
    198. flash
    199. float
    200. flood
    201. flow
    202. flower
    203. fly
    204. follow
    205. fool
    206. forget
    207. found
    208. frighten
    209. fry
    210. gather
    211. gaze
    212. get
    213. glow
    214. glue
    215. go
    216. grab
    217. grate
    218. grease
    219. greet
    220. grip
    221. groan
    222. grow
    223. guarantee
    224. guess
    225. guide
    226. hammer
    227. handle
    228. hang
    229. happen
    230. harass
    231. hate
    232. heal
    233. heap
    234. heat
    235. help
    236. hide
    237. hit
    238. hook
    239. hop
    240. hope
    241. hover
    242. hug
    243. hum
    244. hunt
    245. hurry
    246. identify
    247. ignore
    248. impress
    249. improve
    250. include
    251. increase
    252. influence
    253. inject
    254. instruct
    255. intend
    256. interest
    257. interfere
    258. interrupt
    259. introduce
    260. invent
    261. irritate
    262. jail
    263. jam
    264. jog
    265. join
    266. joke
    267. judge
    268. juggle
    269. jump
    270. keep
    271. kick
    272. kill
    273. kiss
    274. kneel
    275. knit
    276. knock
    277. knot
    278. label
    279. land
    280. last
    281. launch
    282. learn
    283. let
    284. level
    285. lie
    286. lighten
    287. like
    288. listen
    289. live
    290. load
    291. long
    292. look
    293. lose
    294. love
    295. make
    296. man
    297. manage
    298. march
    299. mark
    300. marry
    301. match
    302. matter
    303. mean
    304. measure
    305. meddle
    306. meet
    307. melt
    308. memorize
    309. mess
    310. milk
    311. mine
    312. miss
    313. mix
    314. moan
    315. mourn
    316. muddle
    317. nail
    318. need
    319. nest
    320. nod
    321. note
    322. notice
    323. number
    324. obey
    325. object
    326. observe
    327. obtain
    328. offend
    329. offer
    330. open
    331. overflow
    332. owe
    333. own
    334. pack
    335. paddle
    336. paint
    337. park
    338. pass
    339. paste
    340. pat
    341. pause
    342. peck
    343. pedal
    344. peep
    345. perform
    346. permit
    347. phone
    348. pick
    349. pinch
    350. pine
    351. place
    352. plan
    353. plant
    354. please
    355. point
    356. poke
    357. polish
    358. pop
    359. post
    360. pour
    361. practise
    362. pray
    363. preach
    364. precede
    365. prefer
    366. prepare
    367. present
    368. press
    369. pretend
    370. prevent
    371. prick
    372. print
    373. produce
    374. program
    375. promise
    376. pull
    377. pump
    378. punch
    379. puncture
    380. punish
    381. push
    382. question
    383. queue
    384. radiate
    385. rain
    386. receive
    387. recognise
    388. record
    389. reduce
    390. regret
    391. reign
    392. relax
    393. release
    394. rely
    395. remember
    396. remind
    397. remove
    398. repair
    399. repeat
    400. replace
    401. reply
    402. report
    403. reproduce
    404. request
    405. rescue
    406. return
    407. rhyme
    408. risk
    409. rob
    410. rock
    411. roll
    412. rot
    413. ruin
    414. rule
    415. rush
    416. sack
    417. satisfy
    418. save
    419. saw
    420. say
    421. scare
    422. scold
    423. scorch
    424. scrape
    425. scratch
    426. scream
    427. screw
    428. scribble
    429. scrub
    430. seal
    431. search
    432. separate
    433. settle
    434. share
    435. shave
    436. shiver
    437. shock
    438. shop
    439. sigh
    440. sign
    441. signal
    442. sin
    443. skip
    444. slap
    445. slip
    446. slow
    447. smash
    448. smell
    449. smile
    450. snatch
    451. sneeze
    452. sniff
    453. snow
    454. soak
    455. soothe
    456. sound
    457. spark
    458. sparkle
    459. spell
    460. spill
    461. spoil
    462. spray
    463. sprout
    464. squash
    465. squeak
    466. squeal
    467. squeezed
    468. stain
    469. stamp
    470. stare
    471. start
    472. stay
    473. steer
    474. step
    475. stir
    476. stitch
    477. strap
    478. strengthen
    479. stroke
    480. stuff
    481. subtract
    482. succeed
    483. suck
    484. suffer
    485. supply
    486. support
    487. surprise
    488. suspect
    489. switch
    490. talk
    491. tame
    492. tap
    493. taste
    494. tease
    495. telephone
    496. tempt
    497. test
    498. thaw
    499. tickle
    500. tie
    501. time
    502. tip
    503. tire
    504. tour
    505. trade
    506. transport
    507. tremble
    508. trot
    509. trouble
    510. try
    511. tumble
    512. turn
    513. type
    514. undress
    515. unfasten
    516. unite
    517. unpack
    518. untidy
    519. use
    520. vanish
    521. walk
    522. wander
    523. want
    524. warm
    525. warn
    526. wash
    527. waste
    528. watch
    529. water
    530. wave
    531. weigh
    532. welcome
    533. whine
    534. whip
    535. whirl
    536. whisper
    537. whistle
    538. wink
    539. wish
    540. wobble
    541. work
    542. worry
    543. wrap
    544. wreck
    545. wrestle
    546. yell
    547. zip
    548. zoom
    549. """
    550.  
    551. words.split("\n").each{|s|
    552. input = decode(s)
    553. # input = "X" if input != "X" && encodeHttp(input) != s
    554. input = "X" if input != "X" && encode(input) != s
    555. puts(input + ":" + s)
    556. }
    557.