Calculator Community > Community Contests

[ENDED] Code Golf - The Reboot #3

(1/7) > >>

c4ooo:
Hello ladies, gentleman, and welcome to the third iteration of... :evillaugh: Code Golf Rebooted! :evillaugh: ™...not that its evil or anything... But any way, as you can see i am neither @JWinslow23 nor @pimathbrainiac,for my name is c4ooo, and if you are confused as to what is happening, I will explain. Basically, me Pimath and Winslow as well as others, will all be hosting the challenges in succession. If you are confused because you do not know what code golf is, please check out this thread: https://www.omnimaga.org/community-contests/code-golf-the-reboot-1/

So, as to begin, here is this weeks challenge:
Challenge #3: Cellular automation
You must wright a program that infinitely computes Conway's Game of Life. What is this Conway's Game of Life you may be asking? The Game (no not that game, Conway's Game) is "zero person" game in which the board is split into an infinite grid of square cells. Based on four specific rules, cell die or are reborn. These are the four rules, taken from wikipidia:

--- Quote ---
* Any live cell with fewer than two live neighbours dies, as if caused by under-population.
* Any live cell with two or three live neighbours lives on to the next generation.
* Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.
* Any live cell with more than three live neighbours dies, as if by overcrowding.
--- End quote ---

Thus, a every pixel is a cell, and every turn the four rules must be applied to every pixel/cell to generate the new state of the game board. A cell is a "neighbouring cell" if it is adjacent to the cell, diagonals included. To know more about The Game, I highly suggest Wikipedia (It might be necessary for you to read the article, my summery of The Game is very brief): https://en.wikipedia.org/wiki/Conway's_Game_of_Life. Mostly to give an advantage to calculators, i will add several rules your program must follow:

* Every pixel on the screen must be an individual cell, white being dead and black being alive or vice verse.
* The game board must consist of every pixel on the screen. eg "full screen"., However, the rule does not apply if there is a significant limitation in your language where this is simply not possible, like in Silver Edition TI-BASIC, or PICO-8.
* The outer pixels do not have to follow the rules,If you want you make make them dead forever. Alternatively, you can make the board wrap around.
* The game must start in a pseudo random configuration, loophole fix, courtesy @Runer112 "every cell's initial state must have a nonzero chance of being in each state and must be independent (barring reasonable PRNG limitations) of every other cell's initial state." No user input / cell manipulation is required.
* Every iteration the program must obviously update the screen.Ranking

* @Runer112 - 79 - axe
* @lirtosiast - 87- TI-Basic
* @Haobo - 99 - Axe
* Me (does not really count) - 110 - Axe
* @ben_g - 162 - Axe
* @Scipi - 245 - GBA C
* @pbfy0 - 260 - Nspire Asm
* @Juju - 293 - Pico-8Solutions
Runer112:
Spoiler For Spoiler:
.L
For(ClrDraw)
Pxl-Change(,rand
End
Repeat StorePic DispGraphClrDrawgetKey
For(X,,"
For(9→Z)
-pxl-Test(Z--^3+X-1,Z/3+Xʳʳ-1)ʳ
End
Pxl-On( or pxl-Test(X,Xʳʳ)ʳ=5*X,Xʳʳ
End
End

lirtosiast:
Spoiler For Spoiler:
0
For(F,1,E9
For(X,0,93
Ans/7+49seq(pxl-Test(Y,X+1),Y,0,62
For(Y,1,61
If 2rand<F=pxl-Test(Y,X)+int(3fPart(3cosh(fPart(6-1iPart(sum(Ans,Y,Y+2
Pxl-Change(Y,X
End
End
End

Haobo:
Spoiler For Spoiler:
Copy(rand
While
StorePicDispGraphClrDraw
For(Y,0,63
For(X,0,95
For(Z,0->B,8
pxl-Test(Z^3+X-1,Z/3+Y-1)^^r->A
Z=4?A->C,A+B->B
End
If B=3+(C?B=2
Pxl-On(X,Y
End
End
End
End

ben_g:
Spoiler For Spoiler:
*COMING*

Scipi:
Spoiler For Spoiler:
#include<tonc.h>
#define l for(x=0;++x<239;)for(y=0;++y<159;)
main(){R=1028;*P=32767;u8 x,y,s,m,p;for(;!(S=~K&1023););l M(x,y,Q()&1);for(;u8*v=(u8*)V;){F();l{for(m=-1,p=v[x+y*240],s=-p;++m<9;)s+=v[x+m%3-1+(y+m/3-1)*240];M(x,y,p?s<4&s>1:s==3);}}}

pbfy0:
Spoiler For Spoiler:
.string "PRG"
 
   lcd_ptr .req r4
   active_fb .req r5
   inactive_fb .req r6
   orig_fb .req r7
   new_fb .req r8
 
   @ start
   push {r4-r8, r12, lr}
   
   ldr lcd_ptr, =0xC0000000
   adr r9, offsets
   @mov r0, #0x10000
   @sub r0, r0, #0x11
   ldrh r0, [r9, #6] @ 0xffff is already in the offset table because of -1
   str r0, [lcd_ptr, #0x200]
   
   @ldr r2, [lcd_ptr, #0x18]
   @bic r2, #14
   @orr r2, #6 @ 8 bpp, paletted
   ldrh r2, [r9, #18]
   str r2, [lcd_ptr, #0x18]
   
   @add lcd_ptr, r1, #0x10 @ to 0xC0000010
   ldr orig_fb, [lcd_ptr, #0x10] @ original framebuffer
   mov active_fb, orig_fb @ active framebuffer
   add new_fb, orig_fb, #76800
   mov inactive_fb, new_fb
   
   ldr r10, =76800
   mov r11, #0
1:   subs r10, r10, #1
   strb r11, [active_fb, r10]
   @ldrb r3, [inactive_fb, r10]
   svc #206 @ rand
   and r0, r0, #1
   strb r0, [inactive_fb, r10]
   bne 1b
   
   mov r2, #320
   mov r1, #0
   mov r0, inactive_fb
   push {r1,r2}
   svc #7
   pop {r1,r2}
   ldr r3, =76480
   add r0, r0, r3
   svc #7
   
3:   ldr r0, =76480 @ 320 * 239
   str inactive_fb, [lcd_ptr, #0x10]
   mov inactive_fb, active_fb
   ldr active_fb, [lcd_ptr, #0x10]
 
2:   mov r1, #18 @ 9 * 2
   mov r2, #0
   sub r0, #1
   
1:   sub r1, #2
   ldrsh r3, [r9, r1] @ won't let me use lsl #1
   add r3, r3, r0
   cmp r3, #76800
   ldrltb r3, [active_fb, r3] @ no lt?
   addlt r2, r2, r3
   teq r1, #0
   bne 1b @ at end of loop, r1 and r3 can be discarded
   
   ldrb r1, [active_fb, r0]
   @add r2, r2, r1
   teq r2, #3
   moveq r1, #1
   teqne r2, #4
   movne r1, #0
   strb r1, [inactive_fb, r0]
   teq r0, #320
   bne 2b
   
   ldr r0, =0x900E001C
   ldr r1, [r0]
   tst r1, #0x80
   beq 3b
   
   str orig_fb, [lcd_ptr, #0x10]
   pop {r4-r8, r12, pc}

offsets:
   .hword -321, -320, -319, -1, 1, 319, 320, 321, 0 @ actual offsets
   .hword 0x927 @ misc data

Juju:
Spoiler For Spoiler:
function e(i)x=i%128y=i/128n=pget(x,y)z=-n
for j=-3,5 do z+=pget(x+j/3,y+j%3-1) end
if(z<9 or z>21)n=0
if(z==21)n=7
return n
end
for i=0,8191 do poke(i,112*flr(rnd(2))+7*flr(rnd(2)))end
function _update()end
function _draw()memcpy(24576,0,8192)for i=0,8191 do
poke(i,16*e(i*2+1)+e(i*2))end
end

My solution:
Spoiler For Spoiler:
*COMING*

Scoring
All non-calculator programs will be scored through this counter: http://juju2143.ca/golf/
Assembly programs will be scored on binary size (excluding the header), and Basic/Axe programs will be scored based on-calc source size (once again, excluding the header).
Good luck, and may this contest automate you!
Submission:  
To submit, ether send me a PM with a the/link to code, or electronically mail me at kuznetsov4000[at]gmail[dot]com.
Want to host to?
Just ask me, pimathbrainiac or JWinslow about it, preferably by replying in here: https://www.omnimaga.org/community-contests/code-golf-the-informationdiscussionplanning-thread/.

lirtosiast:
I think I know what my approach (in Ti-BASIC) will be. It will be very slow when golfed completely, and I don't think we should expect any of these to be of practical speed.

Do you mean CSE BASIC for the screen limitations?

I think you should specify a minimum screen size, because on any machine without a screen the solution is trivial: since there are no pixels, do nothing.

Juju:
Hm, another graphic challenge. Gotta try the new PICO-8 0.1.1 out.

c4ooo:

--- Quote from: Juju on June 15, 2015, 12:14:33 am ---Hm, another graphic challenge. Gotta try the new PICO-8 0.1.1 out.

--- End quote ---
This is meant to give advantages to calculators.


--- Quote from: lirtosiast on June 15, 2015, 12:13:03 am ---I think I know what my approach (in Ti-BASIC) will be. It will be very slow when golfed completely, and I don't think we should expect any of these to be of practical speed.

--- End quote ---
This is code golf so size > speed :)

Also AOTM i am still tweaking the rules based on some feedback i am getting on IRC so yea...

Scipi:
I had a feeling Conway's Game Of Life would be one of the challenges. :P Kind of hoping to see Langton's Ant appear, as well

Navigation

[0] Message Index

[#] Next page

Go to full version