Anonymous user
Phrase reversals: Difference between revisions
→{{header|Nim}}
Alextretyak (talk | contribs) (Added 11l) |
|||
Line 1,626:
attesoR edoC esarhP lasreveR
</pre>
=={{header|Nim}}==
<lang Nim>import algorithm, sequtils, strutils
const Phrase = "rosetta code phrase reversal"
echo "Phrase: ", Phrase
echo "Reversed phrase: ", reversed(Phrase).join()
echo "Reversed words: ", Phrase.split().mapIt(reversed(it).join()).join(" ")
echo "Reversed word order: ", reversed(Phrase.split()).join(" ")</lang>
If we prefer to avoid using modules “algorithm” and “sequtils” and produce somewhat more efficient (but also more verbose) code, here is another solution:
<lang Nim>import strutils
const Phrase = "rosetta code phrase reversal"
proc reversed(s: string): string =
for i in countdown(s.high, 0):
result.add s[i]
proc reversedWords(s: string): string =
let words = s.split()
result = reversed(words[0])
for i in 1..words.high:
result.add ' ' & reversed(words[i])
proc reversedWordOrder(s: string): string =
let words = s.split()
result = words[^1]
for i in countdown(words.high - 1, 0):
result.add ' ' & words[i]
echo "Phrase: ", Phrase
echo "Reversed phrase: ", reversed(Phrase)
echo "Reversed words: ", reversedWords(Phrase)
echo "Reversed word order: ", reversedWordOrder(Phrase)</lang>
{{out}}
<pre>Phrase: rosetta code phrase reversal
Reversed phrase: lasrever esarhp edoc attesor
Reversed words: attesor edoc esarhp lasrever
Reversed word order: reversal phrase code rosetta</pre>
=={{header|Oforth}}==
|