name-gen.scm 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/usr/bin/env gosh
  2. ;; Generate names
  3. (import (scheme base)
  4. (scheme read)
  5. (scheme write)
  6. (scheme char)
  7. (srfi 27)
  8. (srfi 28))
  9. (random-source-randomize! default-random-source)
  10. (define (list-random l)
  11. (list-ref l (random-integer (length l))))
  12. (define (printf . l)
  13. (display (apply format l)))
  14. ;; To capitalize the first letter
  15. (define (list-set l i v)
  16. (if (= i 0)
  17. (cons v (cdr l))
  18. (cons (car l) (list-set (cdr l) (- i 1) v))))
  19. (define (string-set s i v)
  20. (list->string (list-set (string->list s) i v)))
  21. (define (capitalize-first s)
  22. (string-set s 0 (char-upcase (string-ref s 0))))
  23. (define name-parts
  24. '("ab" "abo" "ad" "adi" "af" "afi" "ag" "agu" "am" "ame" "an" "ao"
  25. "ap" "apr" "ar" "as" "at" "av" "aw" "awe" "ax" "ay" "az" "be" "bef"
  26. "ber" "beg" "bed" "ban" "bar" "ba" "bas" "bin" "bod" "ca" "co"
  27. "cur" "can" "da" "do" "du" "dar" "dus" "dan" "duk" "das" "daz"
  28. "dash" "eg" "el" "es" "ez" "ex" "fu" "fa" "fo" "ga" "go" "gus"
  29. "gore" "gash" "gane" "gobe" "anor" "aber" "aled" "azid" "donus"
  30. "dalor" "dack" "ack" "abus" "roth" "shush" "shuth" "so" "sad" "sod"
  31. "sun" "spar" "mon" "mal" "mog" "for" "gog" "abb" "zud" "zod" "zun"
  32. "sas" "leb" "lib" "lor" "leg" "la" "gage" "hohe" "hoth" "vint"
  33. "went" "weld" "sard" "dangt" "agt" "vive" "surge" "sang" "hunt"
  34. "saunt" "sent" "send" "store" "leap" "treap" "treed" "tree" "list"
  35. "link" "vect" "pair" "strin" "pink" "red" "white" "blue" "green"
  36. "shy" "loud" "proud" "anger" "loth" "ben" "ten" "sar" "sharp"
  37. "reck" "ralph" "phin" "phor" "phas" "phase" "mount" "rush" "geor"
  38. "wash" "aber" "ham" "coin" "qua" "qui" "que" "reap" "blas" "the"
  39. "pen" "is" "mite" "ear" "than" "sord" "worm" "ur" "god" "dog" "cat"
  40. "tak" "vet" "blak" "lob" "lab" "mom" "mon" "nom" "nor" "ron"
  41. "pie" "ere" "joe" "seph" "hon" "rich" "ard" "dide" "rot"
  42. "mat" "thew" "mark" "luke" "jon" "sai" "mone" "zeb" "ra" "do" "da"
  43. "do" "re" "me" "so" "ti" "gone" "err" "cha" "pand" "lion"))
  44. (define (random-single-name)
  45. ((list-random
  46. (list
  47. (lambda ()
  48. (format "~a"
  49. (capitalize-first (list-random name-parts))))
  50. (lambda ()
  51. (format "~a~a"
  52. (capitalize-first (list-random name-parts))
  53. (list-random name-parts)))
  54. (lambda ()
  55. (format "~a~a~a"
  56. (capitalize-first (list-random name-parts))
  57. (list-random name-parts)
  58. (list-random name-parts)))))))
  59. (define (random-name)
  60. (string-append
  61. (random-single-name)
  62. " "
  63. (random-single-name)))