Ordered words: Difference between revisions

Content deleted Content added
No edit summary
Line 373: Line 373:


=={{header|BaCon}}==
=={{header|BaCon}}==
<lang freebasic>'Ordered words
<lang freebasic>'Ordered words - improved version
OPTION COLLAPSE TRUE
FUNCTION Detect_Ordered(word$)


list$ = LOAD$("unixdict.txt")
LOCAL good, pos, length


SPLIT word$ BY 1 TO c$ SIZE length
FOR word$ IN list$ STEP NL$
IF length <= 1 THEN RETURN TRUE
FOR pos = 0 TO length-2
IF c$[pos] <= c$[pos+1] THEN INCR good
ELSE BREAK
NEXT
RETURN NOT(good-(length-1))


SPLIT word$ BY 1 TO letter$ SIZE length
END FUNCTION
SORT letter$ SIZE length
JOIN letter$ BY "" TO term$ SIZE length


IF word$ = term$ THEN
IF AMOUNT(ARGUMENT$) = 2 THEN list$ = LOAD$(TOKEN$(ARGUMENT$, 2))
ELSE list$ = LOAD$("unixdict.txt")


IF length > MaxLen THEN
FOR w$ IN list$ STEP NL$
MaxLen = length
IF Detect_Ordered(w$) THEN
IF LEN(w$) > Max_Len THEN
result$ = word$
Max_Len = LEN(w$)
ELIF length = MaxLen THEN
list$ = w$
result$ = APPEND$(result$, 0, word$, NL$)
ELIF LEN(w$) = Max_Len THEN
END IF
END IF
list$ = APPEND$(list$, 0, w$)
ENDIF
ENDIF
NEXT
NEXT


PRINT result$
PRINT REPLACE$(list$, " ", NL$)</lang>
</lang>


{{out}}
{{out}}