Numbers in base 10 that are palindromic in bases 2, 4, and 16: Difference between revisions

→‎Much faster approach: cleaned the code
(Added Euler)
(→‎Much faster approach: cleaned the code)
Line 1,130:
====Much faster approach====
The task generates palindromes in base 16, which must then be verified as palindromes in the other two bases.
« BIN 1 SF
R→B →STR 3 OVER SIZE 1 - SUB
0 1 '''FOR''' b
'''IF''' DUP SIZE b 1 + MOD '''THEN''' "0" SWAP + '''END'''
""
OVER SIZE b - 1 '''FOR''' j
OVER j DUP b + SUB +
-1 b - '''STEP'''
'''IF''' OVER ≠ '''THEN''' 1 CF 1 'b' STO '''END'''
'''NEXT''' DROP
1 FS?
» '<span style="color:blue">PAL24?</span>' STO
« BINHEX {R→B 0→STR → h }
« "#"
1 15 '''FOR''' j
h '''IF'''SIZE j1 <span- style="color:blue">PAL24?</span>3 '''THENFOR''' j + '''END'''
h j 256DUP * k 16 *SUB + j +
2 '''STEP'''
1 15 FOR-1 j'''STEP'''
"h" j+ DUPSTR→ 16 * +B→R
» » '''IF''' DUP <span style="color:blue">PAL24?REVHEX</span> '''THEN''' + '''ELSE''' DROP '''END''' STO
2 '''STEP'''
« { }
1 15 '''FOR''' j
0 15 '''FOR''' kb
'''IF''' DUPb <span style="color:blue">PAL24?</span> '''THEN''' b + '''ELSE''' DROPEND NEXT'''END'''
j 256 * k 16 * + j +
1 152 '''FOR''' jx
'''IF''' DUP <span style="color:blue">PAL24?</span> '''THEN''' + '''ELSE''' DROP '''END'''
'''NEXT''' 2 -1 15 '''STEPFOR''' m
16 255x 1 - ^ 16 x ^ 1 - '''FOR''' jb
'''IF''' j 16 MOD '''THEN''' b
j 256 *'''IF''' jm 160 MOD≥ '''THEN''' 16 * m + j 16 / IP +'''END'''
16 x ^ *
'''IF''' DUP <span style="color:blue">PAL24?</span> '''THEN''' + '''ELSE IF''' 25000 > '''THEN''' 255 'j' STO '''END'''
b <span style="color:blue">REVHEX</span> +
'''END'''
'''IF''' DUP <span style="color:blue">PAL24?</span> '''THEN''' + '''ELSE IF''' 25000 > '''THEN''' 255 'j' STO '''END'''
'''NEXT'''
'''ELSE IF''' 25000 ≥ '''THEN''' KILL '''END''' <span style="color:grey">@ not idiomatic but useful to exit 3 nested loops</span>
2 '''STEPEND'''
'''NEXT NEXT NEXT'''
SORT
» '<span style="color:blue">TASK</span>' STO
 
<span style="color:blue">TASK</span> SORT
Runs in 2 minutes 16 on a HP-48SX: 18 times faster than brute force!
{{out}}
1,150

edits