Page 1 of 2

Neat one-liners

Posted: Fri Dec 23, 2022 3:02 pm
by grml

POKE34,203:POKE35,96:FORI=0TO128:POKE$9F2A,I:POKE$9F2B,I:SYS34:NEXT


Works best right after reset while the X16 logo is still visible.

This part:

POKE34,203:POKE35,96:SYS34


does wait for vblank irq, for the rare case when you need it in BASIC. The address is arbitrary, it will work anywhere in RAM.

Add your own interesting one-liners or short BASIC programs below if you must. Inb4 the inevitable "maze" generator


Re: Neat one-liners

Posted: Thu Jan 19, 2023 11:48 am
by grml
Sierpiński triangle:

Code: Select all

CLS:FORY=0TO59:FORX=0TO79:VPOKE1,$B000+Y*256+X*2,78-((XANDY)>0):NEXT:NEXT
It looks better if you squint a little :lol:
x16sierpinsky.png
x16sierpinsky.png (2.85 KiB) Viewed 5304 times
And damn, BASIC is still slow as hell even at 8 MHz.

Re: Neat one-liners

Posted: Thu Jan 19, 2023 10:18 pm
by desertfish
I love the sierpinsky oneliner!

Re: Neat one-liners

Posted: Fri Jan 20, 2023 4:24 am
by Jestin
I tried putting these together, and they make a great two-liner! Zooming Seirpinski!

Re: Neat one-liners

Posted: Sat Jan 21, 2023 10:00 am
by grml

Code: Select all

COLOR13,0:CLS:FORT=0TO9^9:?CHR$(164+2*RND(0)+INT(2*RND(0))*41);:NEXT
This one is interesting. If you watch it go for a minute, you can see the pattern go through a bunch of distinctive phases while the RNG "warms up", until it finally seems to generate more uniformly distributed numbers.

First it's lots of diagonals and vertical lines, then lots of horizontal lines for a while
phase1_2.png
phase1_2.png (31.55 KiB) Viewed 5213 times
then mostly diagonals but clearly biased towards one direction,
phase3.png
phase3.png (34.28 KiB) Viewed 5213 times
and only then the actual intended pattern emerges after about ~4 screens.
phase4.png
phase4.png (35.81 KiB) Viewed 5213 times

Re: Neat one-liners

Posted: Sat Jan 21, 2023 10:32 am
by desertfish
That is unexpected and slightly worrying behavior of the rng...
When running the same oneliner on the C64 (in vice) there is no such 'phasing', it seems uniform right from the start....

(the same when running an equivalent program written in prog8)

Yeah, you should probably be using RND(1) instead of RND(0) in the BASIC oneliner, that seems to fix the lack of uniformedness on the X16.


Screenshot_20230121_113022.jpg
Screenshot_20230121_113022.jpg (150.34 KiB) Viewed 5208 times

Re: Neat one-liners

Posted: Sat Jan 21, 2023 11:54 am
by desertfish
Is it allowed to cheat a tiny little bit by setting up a variable first?

If so, this is my entry:

first set up the variable:
M$=CHR$(145)+CHR$(17)+CHR$(157)+CHR$(29)

and then the one liner itself:
CLS:LOc30,40:FoI=0TO9^9:COlRn(1)*16:?Ch(209)Ch(157)Mi(M$,1+Rn(1)*4,1);:Ne


(yes, it uses token abbreviatons to fit it under 80 characters. They look a bit weird in ascii due to the case flip, if you paste the line in the emulator it does work correctly)

EDIT: it can be done on 1 line and so it adheres to the rules again, but it requires you to embed the actual characters into the line instead of using ascii-copyable chr$ notation:
Screenshot_20230121_154148.png
Screenshot_20230121_154148.png (18.79 KiB) Viewed 5178 times
1 = shift-Q , a ball
2 = cursor left
3 = cursor up
4 = cursor down
5 = cursor left
6 = cursor right

Screenshot_20230121_125326.png
Screenshot_20230121_125326.png (186.2 KiB) Viewed 5195 times

Re: Neat one-liners

Posted: Sat Jan 21, 2023 12:36 pm
by grml
desertfish wrote: Sat Jan 21, 2023 10:32 am Yeah, you should probably be using RND(1) instead of RND(0)
Yes, that's it. At least I got this beautiful oneliner artwork out of my blunder:

Code: Select all

SCREEN128:S=16:FORY=0TO239:FORX=0TO319:PSETX,Y,S+S*RND(0):NEXT:NEXT
rnd0.png
rnd0.png (55.26 KiB) Viewed 5191 times
desertfish wrote: Sat Jan 21, 2023 11:54 am Is it allowed to cheat a tiny little bit by setting up a variable first?
Comparing twoliners against oneliners seems a bit unfair to me. :) It's too bad you have to use CHR$. It would fit on one line if you could copy those chars verbatim, and remove the CLS.

Thanks for showing me how to copy abbreviated tokens.

Code: Select all

SCr128:FORY=0TO239:FORX=0TO319:PsX,Y,136-119*SIN((X+2*Y)/(X+Y+59))+Rn(1):Ne:Ne
This one I call STRIPES OF PATIENCE. A picture would only deprive you of a quintessential and beautiful real-time art experience.

Re: Neat one-liners

Posted: Sat Jan 21, 2023 2:45 pm
by desertfish
I made it into a one liner but you can no longer copy paste it from the forum because of the embedded control characters that you have to type now ;)

Re: Neat one-liners

Posted: Sat Jan 21, 2023 5:12 pm
by BruceRMcF
desertfish wrote: Sat Jan 21, 2023 10:32 am ... Yeah, you should probably be using RND(1) instead of RND(0) in the BASIC oneliner, that seems to fix the lack of uniformedness on the X16.
Does anything interesting happen with RND(T) in one of the RND() functions ... that is, using a different seed each time through the loop?