Phrase reversals: Difference between revisions

Content added Content deleted
(Added 11l)
Line 1,626: Line 1,626:
attesoR edoC esarhP lasreveR
attesoR edoC esarhP lasreveR
</pre>
</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}}==
=={{header|Oforth}}==