Author Topic: [ENDED] Code Golf - The Reboot #3  (Read 33719 times)

0 Members and 1 Guest are viewing this topic.

Offline c4ooo

  • Project Author
  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 252
  • Rating: +10/-1
  • The impossible chemical compound.
    • View Profile
[ENDED] Code Golf - The Reboot #3
« on: June 15, 2015, 12:00:02 am »
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.

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
Solutions
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/.
« Last Edit: June 22, 2015, 11:49:53 am by c4ooo »
-German Kuznetsov
The impossible chemical compound.

Offline lirtosiast

  • LV3 Member (Next: 100)
  • ***
  • Posts: 44
  • Rating: +1/-0
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #1 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.

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.
« Last Edit: June 15, 2015, 12:17:04 am by lirtosiast »

Offline Juju

  • Incredibly sexy mare
  • Coder Of Tomorrow
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 5730
  • Rating: +500/-19
  • Weird programmer
    • View Profile
    • juju2143's shed
Re: Code Golf - The Reboot #3
« Reply #2 on: June 15, 2015, 12:14:33 am »
Hm, another graphic challenge. Gotta try the new PICO-8 0.1.1 out.

Remember the day the walrus started to fly...

I finally cleared my sig after 4 years you're happy now?
THEGAME
This signature is ridiculously large you've been warned.

The cute mare that used to be in my avatar is Yuki Kagayaki, you can follow her on Facebook and Tumblr.

Offline c4ooo

  • Project Author
  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 252
  • Rating: +10/-1
  • The impossible chemical compound.
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #3 on: June 15, 2015, 12:16:01 am »
Hm, another graphic challenge. Gotta try the new PICO-8 0.1.1 out.
This is meant to give advantages to calculators.

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.
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...
« Last Edit: June 15, 2015, 01:39:16 pm by c4ooo »
-German Kuznetsov
The impossible chemical compound.

Offline Scipi

  • Omni Kitten Meow~ =^ω^=
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1547
  • Rating: +192/-3
  • Meow :3
    • View Profile
    • ScipiSoftware
Re: Code Golf - The Reboot #3
« Reply #4 on: June 15, 2015, 12:18:37 am »
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

Imma Cat! =^_^= :3 (It's an emoticon now!)
Spoiler For Things I find interesting:
Spoiler For AI Programming:
Spoiler For Shameless advertising:

Spoiler For OldSig:





Spoiler For IMPORTANT NEWS!:
Late last night, Quebec was invaded by a group calling themselves, "Omnimaga". Not much is known about these mysterious people except that they all carried calculators of some kind and they all seemed to converge on one house in particular. Experts estimate that the combined power of their fabled calculators is greater than all the worlds super computers put together. The group seems to be holding out in the home of a certain DJ_O, who the Omnimagians claim to be their founder. Such power has put the world at a standstill with everyone waiting to see what the Omnimagians will do...

Wait... This just in, the Omnimagians have sent the UN a list of demands that must be met or else the world will be "submitted to the wrath of Netham45's Lobster Army". Such demands include >9001 crates of peanuts, sacrificial blue lobsters, and a wide assortment of cherry flavored items. With such computing power stored in the hands of such people, we can only hope these demands are met.

In the wake of these events, we can only ask, Why? Why do these people make these demands, what caused them to gather, and what are their future plans...

Offline lirtosiast

  • LV3 Member (Next: 100)
  • ***
  • Posts: 44
  • Rating: +1/-0
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #5 on: June 15, 2015, 12:20:34 am »
Sorry, stupid question and off-topic but how do I access IRC?

EDIT: -_- I don't want to spam the fora, so I'll wait.

EDIT: That pun was probably the worst in the history of code golf.
« Last Edit: June 15, 2015, 12:51:03 am by lirtosiast »

Offline c4ooo

  • Project Author
  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 252
  • Rating: +10/-1
  • The impossible chemical compound.
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #6 on: June 15, 2015, 12:21:22 am »
Sorry, stupid question and off-topic but how do I access IRC?
You get access to it once you get 40 post IIRC :)
Also what @Juju said.
« Last Edit: June 15, 2015, 12:27:57 am by c4ooo »
-German Kuznetsov
The impossible chemical compound.

Offline Juju

  • Incredibly sexy mare
  • Coder Of Tomorrow
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 5730
  • Rating: +500/-19
  • Weird programmer
    • View Profile
    • juju2143's shed
Re: Code Golf - The Reboot #3
« Reply #7 on: June 15, 2015, 12:26:44 am »
Sorry, stupid question and off-topic but how do I access IRC?
You get access to it once you get 40 post IIRC :)
That's true, but for the OmnomIRC shoutbox. Otherwise, get a IRC client such as Hexchat or mIRC and point it at either irc.efnet.org or irc.omnimaga.org.

Hm, another graphic challenge. Gotta try the new PICO-8 0.1.1 out.
This is meant to give advantages to calculators.
I don't really see why it wouldn't. It's pretty much Lua with a graphics library.
« Last Edit: June 15, 2015, 12:30:23 am by Juju »

Remember the day the walrus started to fly...

I finally cleared my sig after 4 years you're happy now?
THEGAME
This signature is ridiculously large you've been warned.

The cute mare that used to be in my avatar is Yuki Kagayaki, you can follow her on Facebook and Tumblr.

Offline Scipi

  • Omni Kitten Meow~ =^ω^=
  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1547
  • Rating: +192/-3
  • Meow :3
    • View Profile
    • ScipiSoftware
Re: Code Golf - The Reboot #3
« Reply #8 on: June 15, 2015, 04:28:42 am »
Down to 287 bytes in GBA C ^_^ I can probably cut it down to somewhere below 250 if I can eliminate a for-loop somewhere.

Imma Cat! =^_^= :3 (It's an emoticon now!)
Spoiler For Things I find interesting:
Spoiler For AI Programming:
Spoiler For Shameless advertising:

Spoiler For OldSig:





Spoiler For IMPORTANT NEWS!:
Late last night, Quebec was invaded by a group calling themselves, "Omnimaga". Not much is known about these mysterious people except that they all carried calculators of some kind and they all seemed to converge on one house in particular. Experts estimate that the combined power of their fabled calculators is greater than all the worlds super computers put together. The group seems to be holding out in the home of a certain DJ_O, who the Omnimagians claim to be their founder. Such power has put the world at a standstill with everyone waiting to see what the Omnimagians will do...

Wait... This just in, the Omnimagians have sent the UN a list of demands that must be met or else the world will be "submitted to the wrath of Netham45's Lobster Army". Such demands include >9001 crates of peanuts, sacrificial blue lobsters, and a wide assortment of cherry flavored items. With such computing power stored in the hands of such people, we can only hope these demands are met.

In the wake of these events, we can only ask, Why? Why do these people make these demands, what caused them to gather, and what are their future plans...

Offline ben_g

  • Hey cool I can set a custom title now :)
  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1002
  • Rating: +125/-4
  • Asm noob
    • View Profile
    • Our programmer's team: GameCommandoSquad
Re: Code Golf - The Reboot #3
« Reply #9 on: June 15, 2015, 05:27:23 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.
yeah, Ti-Basic already needs about a minute to update every pixel without doing any logic. I hope you're patient, c4ooo :P

Since Axe is also counted based on source code size now, I think I'm going to try that now.
My projects
 - The Lost Survivors (Unreal Engine) ACTIVE [GameCommandoSquad main project]
 - Oxo, with single-calc multiplayer and AI (axe) RELEASED (screenshot) (topic)
 - An android version of oxo (java)  ACTIVE
 - A 3D collision detection library (axe) RELEASED! (topic)(screenshot)(more recent screenshot)(screenshot of it being used in a tilemapper)
Spoiler For inactive:
- A first person shooter with a polygon-based 3d engine. (z80, will probably be recoded in axe using GLib) ON HOLD (screenshot)
 - A java MORPG. (pc) DEEP COMA(read more)(screenshot)
 - a minecraft game in axe DEAD (source code available)
 - a 3D racing game (axe) ON HOLD (outdated screenshot of asm version)

This signature was last updated on 20/04/2015 and may be outdated

Offline JWinslow23

  • Coder Of Tomorrow
  • LV7 Elite (Next: 700)
  • *******
  • Posts: 556
  • Rating: +43/-6
  • I make quality calculator games...when I have time
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #10 on: June 15, 2015, 11:43:08 am »
EDIT: That pun was probably the worst in the history of code golf.

Well, to be fair, this reboot series doesn't have a lot of "history" :P

I promise you, the next pun will be better ;)
Did you know that "Ammonia Gas" rearranged is "As Omnimaga"?
Click here for the only set of games you'll ever need
= ?

Offline Geekboy1011

  • The Oneironaut
  • Donator
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2031
  • Rating: +119/-2
  • Dream that Awakening dream
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #11 on: June 15, 2015, 06:03:40 pm »
Sorry, stupid question and off-topic but how do I access IRC?

EDIT: -_- I don't want to spam the fora, so I'll wait.

EDIT: That pun was probably the worst in the history of code golf.

Off topic response to an off topic post.  But it's related to forum etiquette.

As long as the posts are constructive and not spam. There is no such thing as spamming the forum. Post away! And to be honest it's actually recommended to post when ever possible. This way the questions,content is available to everyone. Not just the people active at the time!

Offline lirtosiast

  • LV3 Member (Next: 100)
  • ***
  • Posts: 44
  • Rating: +1/-0
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #12 on: June 15, 2015, 11:24:53 pm »
It looks like my first attempt will be about 200 bytes, and take over ten minutes per frame. I prefer the short ones, but let's see how this goes.

Offline Runer112

  • Moderator
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #13 on: June 16, 2015, 09:32:27 am »
Overall, I'm fairly happy with this question being sufficiently specified. However, I see one rule that should probably be specified further:

  • The game must start in a pseudo random configuration, and no user input is required.

As an example of abuse, a single cell placed pseudorandomly is a "pseudo random configuration," but not a very interesting one as every generation after the initial will just be entirely empty. You could fix this by specifying that 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.

Also, you may want to consider adding a minimum bound on FPS. I realize this is a code golf contest, but at a point, one has to say that an extremely slow game of life simulation is no longer an acceptable game of life simulation. I understand that this may make the challenge as currently specified more or less impossible in some languages, in which case you could consider extending the exception to the "full screen" rule. I would suggest something like a minimum of 0.1 FPS and allowing entries that cannot meet this at full screen to run on a square board with a side length of at least 16 and no less than the largest power of two that satisfies the minimum FPS.

Offline c4ooo

  • Project Author
  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 252
  • Rating: +10/-1
  • The impossible chemical compound.
    • View Profile
Re: Code Golf - The Reboot #3
« Reply #14 on: June 16, 2015, 11:05:44 am »
Overall, I'm fairly happy with this question being sufficiently specified. However, I see one rule that should probably be specified further:

  • The game must start in a pseudo random configuration, and no user input is required.

As an example of abuse, a single cell placed pseudorandomly is a "pseudo random configuration," but not a very interesting one as every generation after the initial will just be entirely empty. You could fix this by specifying that 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.
Fixed :D

Also, you may want to consider adding a minimum bound on FPS. I realize this is a code golf contest, but at a point, one has to say that an extremely slow game of life simulation is no longer an acceptable game of life simulation. I understand that this may make the challenge as currently specified more or less impossible in some languages, in which case you could consider extending the exception to the "full screen" rule. I would suggest something like a minimum of 0.1 FPS and allowing entries that cannot meet this at full screen to run on a square board with a side length of at least 16 and no less than the largest power of two that satisfies the minimum FPS.
Nahh, it have plenty of time  ;)

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.
Standard loopholes apply : http://meta.codegolf.stackexchange.com/questions/1061/loopholes-that-are-forbidden-by-default
IMPORTANT
I will be away starting tomorrow afternoon till about Friday afternoon. If you have any important thing to talk to me about, please ask me before then .
« Last Edit: June 16, 2015, 11:13:22 am by c4ooo »
-German Kuznetsov
The impossible chemical compound.