ABC words: Difference between revisions

Added solution for Action!
(→‎{{header|Ruby}}: Added Ruby)
(Added solution for Action!)
Line 78:
syllabic
tabernacle
tablecloth
</pre>
 
=={{header|Action!}}==
In the following solution the input file is loaded from H6 drive. Altirra emulator automatically converts CR/LF character from ASCII into 155 character in ATASCII charset used by Atari 8-bit computer when one from H6-H10 hard drive under DOS 2.5 is used.
<lang Action!>BYTE FUNC FindC(CHAR ARRAY text CHAR c)
BYTE i
 
i=1
WHILE i<=text(0)
DO
IF text(i)=c THEN
RETURN (i)
FI
i==+1
OD
RETURN (0)
 
BYTE FUNC IsAbcWord(CHAR ARRAY word)
BYTE a,b,c
 
a=FindC(word,'a)
IF a=0 THEN RETURN (0) FI
b=FindC(word,'b)
IF b<a THEN RETURN (0) FI
c=FindC(word,'c)
IF c<b THEN RETURN (0) FI
RETURN (1)
 
PROC FindAbcWords(CHAR ARRAY fname)
CHAR ARRAY line(256)
CHAR ARRAY tmp(256)
BYTE pos,dev=[1]
 
pos=2
Close(dev)
Open(dev,fname,4)
WHILE Eof(dev)=0
DO
InputSD(dev,line)
IF IsAbcWord(line) THEN
IF pos+line(0)>=40 THEN
PutE() pos=2
FI
Print(line) Put(32)
pos==+line(0)+1
FI
OD
Close(dev)
RETURN
 
PROC Main()
CHAR ARRAY fname="H6:UNIXDICT.TXT"
 
FindAbcWords(fname)
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/ABC_words.png Screenshot from Atari 8-bit computer]
<pre>
aback abacus abc abdicate abduct
abeyance abject abreact abscess
abscissa abscissae absence abstract
abstracter abstractor adiabatic
aerobacter aerobic albacore alberich
albrecht algebraic alphabetic
ambiance ambuscade aminobenzoic
anaerobic arabic athabascan auerbach
diabetic diabolic drawback fabric
fabricate flashback halfback iambic
lampblack leatherback metabolic
nabisco paperback parabolic playback
prefabricate quarterback razorback
roadblock sabbatical snapback
strabismic syllabic tabernacle
tablecloth
</pre>
Anonymous user