Unique characters in each string: Difference between revisions
Content added Content deleted
(Added XPL0 example.) |
(Added solution for Action!) |
||
Line 14: | Line 14: | ||
{{Template:Strings}} |
{{Template:Strings}} |
||
<br><br> |
<br><br> |
||
=={{header|Action!}}== |
|||
<lang Action!>DEFINE MAX="128" |
|||
CHAR ARRAY uniq(MAX) |
|||
BYTE FUNC IsUnique(CHAR ARRAY s CHAR c) |
|||
BYTE count,i |
|||
count=0 |
|||
FOR i=1 TO s(0) |
|||
DO |
|||
IF s(i)=c THEN |
|||
count==+1 |
|||
IF count>1 THEN |
|||
RETURN (0) |
|||
FI |
|||
FI |
|||
OD |
|||
IF count=0 THEN |
|||
RETURN (0) |
|||
FI |
|||
RETURN (1) |
|||
PROC SetUnique(CHAR ARRAY s) |
|||
BYTE i,c |
|||
SetBlock(uniq,MAX,0) |
|||
FOR i=1 TO s(0) |
|||
DO |
|||
c=s(i) |
|||
IF IsUnique(s,c) THEN |
|||
uniq(c)=1 |
|||
FI |
|||
OD |
|||
RETURN |
|||
PROC CheckUnique(CHAR ARRAY s) |
|||
BYTE i |
|||
FOR i=0 TO MAX-1 |
|||
DO |
|||
IF uniq(i)=1 AND IsUnique(s,i)=0 THEN |
|||
uniq(i)=0 |
|||
FI |
|||
OD |
|||
RETURN |
|||
PROC Main() |
|||
DEFINE PTR="CARD" |
|||
DEFINE CNT="3" |
|||
PTR ARRAY l(CNT) |
|||
INT i |
|||
l(0)="1a3c52debeffd" |
|||
l(1)="2b6178c97a938stf" |
|||
l(2)="3ycxdb1fgxa2yz" |
|||
SetUnique(l(0)) |
|||
FOR i=1 TO CNT-1 |
|||
DO |
|||
CheckUnique(l(i)) |
|||
OD |
|||
FOR i=0 TO MAX-1 |
|||
DO |
|||
IF uniq(i) THEN |
|||
Put(i) Put(32) |
|||
FI |
|||
OD |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Unique_characters_in_each_string.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
1 2 3 a b c |
|||
</pre> |
|||
=={{header|Ada}}== |
=={{header|Ada}}== |