Jump to content

Longest string challenge: Difference between revisions

Applesoft BASIC
m (→‎{{header|Lua}}: missing </code>)
(Applesoft BASIC)
Line 599:
Igual que la entrada de FreeBASIC.
</pre>
==={{header|Applesoft BASIC}}===
 
Only Integer and String type variables are used. It is difficult not to use floats as, unfortunately, pretty much all internal operations default to floating point in Applesoft BASIC. Most, if not all, functions in Applesoft BASIC are passed arguments and return floating point types. In the spirit of the task the INT function is used throughout.
 
<syntaxhighlight lang="basic"> REM CONSTANTS
100 TWO% = INT ( VAL ("2"))
REM NOT IS A "LOGICAL" OPERATOR, A NON-ARITHMETIC OPERATOR
110 UN% = NOT FALSE%
REM MSG$ = "PRESS CTRL+C THEN RETURN FOR END-OF-TEXT"
REM BUT NEED THE HIGH BIT SET, SO ASSIGN MSG$ THE TEDIOUS WAY
111 R$ = CHR$ ( INT ( VAL ("210")))
112 E$ = CHR$ ( INT ( VAL ("197")))
113 S$ = CHR$ ( INT ( VAL ("211")))
114 SPACE$ = CHR$ ( INT ( VAL ("160")))
115 C$ = CHR$ ( INT ( VAL ("195")))
116 T$ = CHR$ ( INT ( VAL ("212")))
117 N$ = CHR$ ( INT ( VAL ("206")))
118 F$ = CHR$ ( INT ( VAL ("198")))
119 HYPHEN$ = CHR$ ( INT ( VAL ("173")))
120 MSG$ = CHR$ ( INT ( VAL ("208"))) + R$ + E$ + S$ + S$ + SP$
121 MSG$ = MSG$ + C$ + T$ + R$ + CHR$ ( INT ( VAL ("204"))) + CHR$ ( INT ( VAL ("171"))) + C$ + SP$
122 MSG$ = MSG$ + T$ + CHR$ ( INT ( VAL ("200"))) + E$ + N$ + SP$
123 MSG$ = MSG$ + R$ + E$ + T$ + CHR$ ( INT ( VAL ("213"))) + R$ + N$ + SP$
124 MSG$ = MSG$ + F$ + CHR$ ( INT ( VAL ("207"))) + R$ + SP$
125 MSG$ = MSG$ + E$ + N$ + CHR$ ( INT ( VAL ("196"))) + HY$ + CHR$ ( INT ( VAL ("207"))) + F$ + HY$
126 MSG$ = MSG$ + T$ + E$ + CHR$ ( INT ( VAL ("216"))) + T$
REM OUTPUT THE MESSAGE TO THE TOP OF THE TEXT SCREEN
130 IT$ = "12345678901234567890123"
140 TEXT : HOME : VTAB 2: POKE 34,1
REM + IS A "STRING" OPERATOR, A NON-ARITHMETIC OPERATOR WHEN USED WITH STRINGS FOR CONCATENATION
150 IT$ = IT$ + "."
160 P% = INT ( VAL ("10" + STR$ ( LEN (IT$))))
170 POKE P%, INT ( ASC ( LEFT$ (MSG$,UN%)))
180 MSG$ = MID$ (MSG$,TWO%)
190 IF LEN (MSG$) GOTO 150
REM READ STDIN
200 ONERR GOTO 500"END OF DATA?
210 INPUT "";STD$
220 L% = INT ( LEN (STD$))
230 IF NOT L% GOTO 210"READ NEXT LINE IF EMPTY
250 IT$ = BIGGEST$
260 COMPARE$ = STD$
REM COMPARE WITH LONGEST STRING
270 IF INT ( LEN (COMPARE$)) GOTO 300"DECREMENT
280 IF INT ( LEN (IT$)) GOTO 210"READ NEXT LINE IF LESS THAN LONGEST STRING
REM EQUAL TO LONGEST STRING
290 RESULT$ = RESULT$ + CHR$ (13) + STD$: GOTO 210"READ NEXT LINE
REM REMOVE A CHARACTER FROM BOTH IF THEY STILL HAVE LENGTH
300 IF INT ( LEN (IT$)) THEN IT$ = MID$ (IT$,TWO%):COMPARE$ = MID$ (COMPARE$,TWO%): GOTO 270"COMPARE AGAIN
REM GREATER THAN LONGEST STRING
310 BIGGEST$ = STD$
320 RESULT$ = BIGGEST$
330 GOTO 210"READ NEXT LINE
REM CATCH ERROR
500 POKE INT ( VAL ("216")),ZERO%
510 E% = INT ( PEEK ( INT ( VAL ("222"))))
REM CLEAR THE MESSAGE FROM THE TEXT SCREEN
520 V% = INT ( PEEK ( INT ( VAL ("37"))))
530 TEXT : VTAB 1: CALL - 868
540 VTAB V%: CALL 64624
REM ERROR CODE 255
550 IT$ = "12345678901234567"
560 IT$ = IT$ + IT$ + IT$
570 IT$ = IT$ + IT$ + IT$ + IT$ + IT$
580 COMPARE$ = MID$ (IT$,UN%,E%)
REM COMPARE ERROR CODE WITH 255
590 IF INT ( LEN (COMPARE$)) GOTO 610"DECREMENT
600 RESUME
REM REMOVE A CHARACTER FROM THE ITERATOR
610 IT$ = MID$ (IT$,TWO%)
REM DONE? IF NOT DONE REMOVE A CHARACTER FROM THE ERROR CODE
620 IF INT ( LEN (IT$)) THEN COMPARE$ = MID$ (COMPARE$,TWO%): GOTO 590"COMPARE AGAIN
630 PRINT RESULT$</syntaxhighlight>
==={{header|True BASIC}}===
{{trans|FreeBASIC}}
Line 624 ⟶ 693:
Igual que la entrada de FreeBASIC.
</pre>
 
 
=={{header|BBC BASIC}}==
413

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.