文字颠倒 [英] Upside down text

查看:17
本文介绍了文字颠倒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何设计一个接受小写字母字符串并将该字符串颠倒生成的程序?

因此,如果我键入home

我把ǝɯoɥ倒过来了。

我试着在书中寻找入门信息,但一无所获。

推荐答案

尝试此方法,有点暴力,但对于大写、小写和数字字符非常有效-所有其他字符都按原样显示:

(define upside-map '#hash(
  (#a . #ɐ) (# . #q) (#c . #ɔ) (#d . #p) (#e . #ǝ) (#f . #ɟ)
  (#g . #ƃ) (#h . #ɥ) (#i . #ı) (#j . #ɾ) (#k . #ʞ) (#l . #ן)
  (#m . #ɯ) (#
 . #u) (#o . #o) (#p . #d) (#q . #) (#
 . #ɹ)
  (#s . #s) (#	 . #ʇ) (#u . #
) (#v . #ʌ) (#w . #ʍ) (#x . #x)
  (#y . #ʎ) (#z . #z) (#A . #∀) (#B . #𐐒) (#C . #Ɔ) (#D . #◖)
  (#E . #Ǝ) (#F . #Ⅎ) (#G . #⅁) (#H . #H) (#I . #I) (#J . #s)
  (#K . #⋊) (#L . #˥) (#M . #W) (#N . #N) (#O . #O) (#P . #Ԁ)
  (#Q . #Ό) (#R . #ᴚ) (#S . #S) (#T . #⊥) (#U . #∩) (#V . #Λ)
  (#W . #M) (#X . #X) (#Y . #⅄) (# . #) (# . #) (#1 . #Ɩ)
  (#2 . #ᄅ) (#3 . #Ɛ) (#4 . #ㄣ) (#5 . #ϛ) (#6 . #9) (#7 . #ㄥ)
  (#8 . #8) (#9 . #6)))

(define (flip-string str)
  (list->string
   (map (lambda (c)
          (hash-ref upside-map c (const c)))
        (reverse (string->list str)))))

例如:

(flip-string "Hello World")
=> "pןɹoM oןןǝH"

作为参考,我使用了取自Wikipedia的table转换。上面的解决方案有一点问题:我无法使其适用于Unicode值为#u10412𐐒字符(翻转的B),因为它不适合16位Unicode字符,因此无法表示。我不知道球拍不支持编码要求超过16位的字符。

这篇关于文字颠倒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆