Phrase reversals: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (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}}== |