Phrase reversals: Difference between revisions

Added solution for Action!
(Add SenseTalk implementation)
(Added solution for Action!)
Line 25:
{{out}}
<pre>
lasrever esarhp edoc attesor
attesor edoc esarhp lasrever
reversal phrase code rosetta
</pre>
 
=={{header|Action!}}==
<lang Action!>PROC ReversePart(CHAR ARRAY src,dst BYTE start,len)
BYTE i
 
FOR i=0 TO len-1
DO
dst(start+len-i-1)=src(start+i)
OD
RETURN
 
PROC ReverseString(CHAR ARRAY src,dst)
BYTE i
 
dst(0)=src(0)
ReversePart(src,dst,1,src(0))
RETURN
 
PROC ReverseInWords(CHAR ARRAY src,dst)
BYTE i,start
 
dst(0)=src(0)
i=1
WHILE i<=src(0)
DO
IF src(i)=32 THEN
dst(i)=32 i==+1
ELSE
start=i
WHILE i<=src(0) AND src(i)#32
DO i==+1 OD
ReversePart(src,dst,start,i-start)
FI
OD
RETURN
 
PROC ReverseWords(CHAR ARRAY src,dst)
CHAR ARRAY tmp(100)
ReverseString(src,tmp)
ReverseInWords(tmp,dst)
RETURN
 
PROC Main()
CHAR ARRAY s="rosetta code phrase reversal",rev(100)
 
PrintE(s)
ReverseString(s,rev)
PrintE(rev)
ReverseInWords(s,rev)
PrintE(rev)
ReverseWords(s,rev)
PrintE(rev)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Phrase_reversals.png Screenshot from Atari 8-bit computer]
<pre>
rosetta code phrase reversal
lasrever esarhp edoc attesor
attesor edoc esarhp lasrever
Anonymous user