Grundstof oversætter
Phosphorus Yttrium Thorium Oxygen Nitrogen Iodine Sulfur Nitrogen Iodine Cerium. Jeg blev i aftes inspireret af et indlæg på reddit; en studerende der i årbogen har været kreativ og skrevet en række grundstoffer, som via deres kemiske symboler kan give en anden betydning. I eksemplet var dette budskub mindre stuerent, men det kan jo være sagen uvedkommende.
Det følgende python script forsøger at oversætte en vilkårlig sætning til en række af grundstof symboler eller navne. Det er dog langtfra alle sætninger der er mulige, fx kan man ikke oversætte "star":
- Der findes ikke grundstof med kemisk symbol St (som kan kombineres med Ar)
- Der findes ikke grundstof med kemisk symbol R (som kan kombineres med S og Ta)
Algoritmen
Algoritmen til at finde en oversættelse er simpel. translateWord
er konstrueret rekursivt; den forsøger alle mulige kombinationer via et dybde-først gennemløb af alle muligheder. Som pseudokode er den: (ikke meget forskellig fra python-koden)
function translateWord(word, string)
if word is empty then
return string
else
future = false
i = 0
while not future do {
element = getElement(word, i)
if no element then
return false
endif
future = translateWord(word-element, string+element)
i = i+1
endwhile
endif
endfunction
Eksempler
- "Python is nice" oversættes til PYThON IS NICe eller Phosphorus Yttrium Thorium Oxygen Nitrogen Iodine Sulfur Nitrogen Iodine Cerium
- "Casper" oversættes til CAsPEr eller Carbon Arsenic Phosphorus Erbium
- Thorium Iodine Sulfur Iodine Sulfur Carbon Radium Phosphorus
Brug
Scriptet forventer første cli-argument til at være strengen der ønskes oversat. Med argumentet -names
skrives oversættelsen som hele grundstof-navne, ellers skrives den some kemiske symboler.
Du kan finde scriptet på elementTranslator@github.