Phrase reversals: Difference between revisions
(+Java, not as concise as the others :() |
m (→{{header|Java}}: Typign is hard, OK?) |
||
Line 52: | Line 52: | ||
String str = "rosetta code phrase reversal"; |
String str = "rosetta code phrase reversal"; |
||
System.out.println(" |
System.out.println("Straight-up reversed: " + reverse(str)); |
||
String[] words = str.split(" "); |
String[] words = str.split(" "); |
||
for(int i = 0; i < words.length; i++){ |
for(int i = 0; i < words.length; i++){ |
||
Line 62: | Line 62: | ||
}</lang> |
}</lang> |
||
{{out}} |
{{out}} |
||
<pre> |
<pre>Straight-up reversed: lasrever esarhp edoc attesor |
||
Reversed words: attesor edoc esarhp lasrever |
Reversed words: attesor edoc esarhp lasrever |
||
Reversed word order: reversal phrase code rosetta</pre> |
Reversed word order: reversal phrase code rosetta</pre> |
||
=={{header|Python}}== |
=={{header|Python}}== |
||
<lang python>>>> phrase = "rosetta code phrase reversal" |
<lang python>>>> phrase = "rosetta code phrase reversal" |
Revision as of 17:39, 13 November 2014
Given a string of space separated words containing the following phrase:
- "rosetta code phrase reversal"
- Reverse the string.
- Reverse each individual word in the string, maintaining original string order.
- Reverse the order of each word of the phrase, maintaining the order of characters in each word.
Show your output here.
D
Partially lazy. <lang d>void main() {
import std.stdio, std.range;
immutable phrase = "rosetta code phrase reversal"; phrase.retro.writeln; // Reversed string. phrase.splitter.map!retro.joiner(" ").writeln; // Words reversed. phrase.split.retro.joiner(" ").writeln; // Word order reversed.
}</lang>
- Output:
lasrever esarhp edoc attesor attesor edoc esarhp lasrever reversal phrase code rosetta
Java
<lang java5>import java.util.Arrays;
public class PhaseRev{ private static String reverse(String x){ return new StringBuilder(x).reverse().toString(); }
private static <T> T[] reverse(T[] x){ T[] rev = Arrays.copyOf(x, x.length); for(int i = x.length - 1; i >= 0; i--){ rev[x.length - 1 - i] = x[i]; } return rev; }
private static String join(String[] arr, String joinStr){ StringBuilder joined = new StringBuilder(); for(int i = 0; i < arr.length; i++){ joined.append(arr[i]); if(i < arr.length - 1) joined.append(joinStr); } return joined.toString(); }
public static void main(String[] args){ String str = "rosetta code phrase reversal";
System.out.println("Straight-up reversed: " + reverse(str)); String[] words = str.split(" "); for(int i = 0; i < words.length; i++){ words[i] = reverse(words[i]); } System.out.println("Reversed words: " + join(words, " ")); System.out.println("Reversed word order: " + join(reverse(str.split(" ")), " ")); } }</lang>
- Output:
Straight-up reversed: lasrever esarhp edoc attesor Reversed words: attesor edoc esarhp lasrever Reversed word order: reversal phrase code rosetta
Python
<lang python>>>> phrase = "rosetta code phrase reversal" >>> phrase[::-1] # Reversed. 'lasrever esarhp edoc attesor' >>> ' '.join(word[::-1] for word in phrase.split()) # Words reversed. 'attesor edoc esarhp lasrever' >>> ' '.join(word for word in phrase.split()[::-1]) # Word order reversed. 'reversal phrase code rosetta' >>> </lang>