Anadromes: Difference between revisions
Content added Content deleted
imported>Celtic-Coder m (Correct the syntax highlighting for the Rust entry) |
imported>Rowsety Moid No edit summary |
||
Line 380: | Line 380: | ||
revotes <-> setover |
revotes <-> setover |
||
sallets <-> stellas |
sallets <-> stellas |
||
</pre> |
|||
=={{header|Common Lisp}}== |
|||
The hash-table's <code>equalp</code> test is case-insensitive, and so we find 32 pairs rather than 17. However, the table maps each word to itself, and so looking up a reversed word gets it in its original case, as can be seen in the output. |
|||
<syntaxhighlight lang="lisp"> |
|||
(defun read-words (filename) |
|||
(let ((words '())) |
|||
(with-open-file (s filename :direction :input) |
|||
(loop |
|||
(let ((word (read-line s nil nil))) |
|||
(if word |
|||
(when (> (length word) 6) |
|||
(setq words (cons word words))) |
|||
(return (reverse words)))))))) |
|||
(defun anadromes () |
|||
(let ((words (read-words "notes/words.txt")) |
|||
(dict (make-hash-table :test #'equalp))) |
|||
(dolist (word words) |
|||
(setf (gethash word dict) word)) |
|||
(mapcar |
|||
(lambda (word) |
|||
(list word (gethash (reverse word) dict))) |
|||
(remove-if-not |
|||
(lambda (word) |
|||
(let ((rev (reverse word))) |
|||
(and (string-lessp word rev) |
|||
(gethash rev dict) |
|||
(not (string-equal word rev))))) |
|||
words)))) |
|||
(format t "~%~:{~10A ~10A~%~}~%" |
|||
(anadromes)) |
|||
</syntaxhighlight> |
|||
{{Out}} |
|||
<pre> |
|||
amaroid diorama |
|||
anacara Aracana |
|||
Annabal Labanna |
|||
Artamus Sumatra |
|||
Colbert Trebloc |
|||
degener reneged |
|||
deifier reified |
|||
Delbert trebled |
|||
Delevan naveled |
|||
deliver reviled |
|||
dessert tressed |
|||
desserts stressed |
|||
deviler relived |
|||
dioramas samaroid |
|||
Eimmart trammie |
|||
Emmeram maremme |
|||
gateman nametag |
|||
Latimer remital |
|||
Lattimer remittal |
|||
lessees Seessel |
|||
leveler relevel |
|||
Nicolaus Sualocin |
|||
pat-pat tap-tap |
|||
redrawer rewarder |
|||
reknits stinker |
|||
relever reveler |
|||
reliver reviler |
|||
revotes setover |
|||
ROYGBIV vibgyor |
|||
Rotanev Venator |
|||
sallets stellas |
|||
sennits Stinnes |
|||
</pre> |
</pre> |
||