Phrase reversals: Difference between revisions
(+ D entry) |
(+Java, not as concise as the others :() |
||
Line 23: | Line 23: | ||
attesor edoc esarhp lasrever |
attesor edoc esarhp lasrever |
||
reversal phrase code rosetta</pre> |
reversal phrase code rosetta</pre> |
||
=={{header|Java}}== |
|||
{{works with|Java|1.5+}} |
|||
<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("Striaght-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> |
|||
{{out}} |
|||
<pre>Striaght-up reversed: lasrever esarhp edoc attesor |
|||
Reversed words: attesor edoc esarhp lasrever |
|||
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 16:40, 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("Striaght-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:
Striaght-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>