User:Iddi01
(My other nick: NDusN, due to how some Redcode software display теsт)
The username was originally without meaning, but you can consider it as a recursive acronym, iddi01 dislikes Discord indefinitely.
I'm an expert in uniсode and errology (i know how to make unimaginably long errors from very compact code, although updates to Python limits the possibilities).
I never publish esolangs unless they're unique in some way and i've implemented them (and i encourage everyone else to do that as well!)
Execode/Exechars
Genetic
IP
emit
Mеmоrу
Rеlаng
I nearly stopped creating esolangs because it's impossible to bring attention to a language by only creating a page on this wiki, and what fun it is to create languages that nobody will ever know of?
Programming games
I am a big fan of programming games ever since i met brainfUck (a.k.a BF joust), which unfortunately almost went dead due to the same reason as Core War, which is that the programs (warriors) are becoming too strong to even think about making for a beginner, and so people will lose interest in it.
And BF joust is the easy one, and i mean easy. The Beginner's hill for Core War is about as easy as the only hill for BF joust. So BF joust should be the game to introduce programming games to beginners.
Everybody, please make more and better beginner resources (including hills) for BF joust and Core War, so that they will become popular once again.
My brainfUck (not bf!) programs
You can get an idea of how the three works by visiting the strategy guide and then scrolling to the bottom of BF Joust champions.
This program is a champion called β (i still wish the hill could allow non-ASCII characters), although it is #22 at time of writing:
(>+)*4>[<<<<(+)*5<(-)*15(>)*5(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+ >[<<<<(+)*5<(-)*7<(-)*15(>)*6(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+ >[<<<<(+)*5<(-)*7<(+)*16<(-)*15(>)*7(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+ >[<<<<(+)*5<(-)*7<(+)*16<(-)*17<(-)*15(>)*8(>[+[+[---[-[(-[{(+)*15(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%13}])%11]]]]])*21]+ (<)*4 >-[<++++<(-)*17<(+)*97<(-)*132<(-)*16(>)*11(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+ >-[<++++<(-)*17<(+)*65<(-)*97<(+)*132<(-)*16(>)*12(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+ >-[<++++<(-)*17<(+)*65<(-)*97<(+)*97<(-)*132<(-)*16(>)*13(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+ >-[<++++<(-)*17<(+)*65<(-)*97<(+)*97<(-)*132<(+)*132<(-)*16(>)*14(>[+[+[---[-[(-[{(+)*22(+[{(+)*92(+.)*24(>[(+)*113(+.)*27>])*-1}])%20}])%18]]]]])*21]+ (<)*7 (-[(>)*9(>[+[+[---[-[(-[{(+)*21(+[{(+)*89(+.)*27(>[(+)*113(+.)*27>])*-1}])%19}])%17]]]]]-)*21](+)*65>)*8 (>[([+[+[---[-[(-[{(+)*25(+[{(+)*93([+{[+-+]}[++-[++-]]>(+)*117])%5000[++-[++-]](>[(+)*117([+{[+-+]}[++-[++-]]>(+)*117])%5000[++-[++-]]>])*-1}])%23}])%21]]]]]+>)*21](+)*21)*21
I always thought i'm only good at offensive programs, but then i made a one-line defensive program (clock) which made #1, unfortunately not as original as the above:
>>>+<-<-(>(-)*128<+[<(-)*111(>)*9(+)*111(+.)*33(<)*9(-)*111(>)*10(+)*111(+.)*33(<)*10(---+)*-1]-)*8>+[-((-)*256<+[<(---+)*-1]->)*8(-)*96431<(+)*65(>)*9(>[(+)*111(+.)*32>])*19](+)*21<(-)*33(>)*11([(-)*106[-.][--+[--+]]>]>)*21
Later, i made ε, a rush program which came first despite two_thirds winning against everything else:
>+>-(>)*6(>[-[-[-[++++[+[+([(+[{(-)*11(-[{(-)*97([-{[-+-]}[++-]>])%2000[++-]>}])%13}])%9]>)*21]]]]]])*5 (<-<+)*5<+[<<(-)*132(>)*13(>[-[+([(+[{(-)*12(-[{(-)*97([-{[-+-]}[++-]>])%2000[++-]>}])%14}])%12]>)*21]])*16] -<-[<(-)*132(>)*13(>[-[+([(+[{(-)*12(-[{(-)*97([-{[-+-]}[++-]>])%2000[++-]>}])%14}])%12]>)*21]])*16]+((+)*5>(-)*5>)*6 (<(-)*7<(+)*7)*6<(+)*43>((+)*17>(-)*17>)*4>>>>> ((>[-[+([(+[{(-)*16(-[{([-{[-+-]}[++-]>])%5000[++-]>}])%18}])%16]+>)*21]](+)*11)*2>)*4 ([(+[{(-)*16(-[{([-{[-+-]}[++-]>])%5000[++-]>}])%18}])%16]>)*-1
My Redcode programs
;redcode-94nop ;name lzma2 ;or rather, Epsilon. This is actually totally unrelated to lzma, but it shares ;the same core feature: deadly against imps. ;author NDusN ;which is how CoreWin display теsт ;strategy q, Very anti-imp paper and ordinary stone ;This warrior is somewhat ordinary, and not nearly as original as lzma ;assert CORESIZE == 8000 org qscan;from Core Warrior #92 qm equ 3722 qm2 equ 2681 qa1 equ ((qtab1-1-found)*qm2+1) qa2 equ ((qtab1-found)*qm2+1) qb1 equ ((qtab2-1-found)*qm2+1) qb2 equ ((qtab2-found)*qm2+1) qb3 equ ((qtab2+1-found)*qm2+1) qc equ ((qtab3-found)*qm2+1) dat 7, qb1 qtab2 dat 7, qb2 dat 7, qb3 for 11 dat 0, 0 rof cnt equ 3358 step equ 3039 step1 equ 7848 step2 equ 2566 step3 equ 3201 step4 equ 2167 step5 equ 4081 boot spl 2, {1111 spl 2, {2222 spl 1, }0 spl 1, {3333 mov <1, {1 spl step5, data+2 spl *-1, {4444 mov <1, {1 jmp step4, data2+1 spl @0, >step1 mov }-1, >-1 spl @0, >step3 mov }-1, >-1 mov data2, >4063 mov data2, >1102 mov {-4, <1 djn @0, <step2 data2 dat <2667, <5334 spl #0 mov data, @atk hit add #step*2, atk atk mov data, }hit-step*cnt djn.f -3, >hit-step*cnt dat 0, 0 dat 0, 0 data dat >step, >1 for 12 dat 0, 0 rof qtab3 dat >-90, >qc for 5 dat 0, 0 rof dat 0, qa1 qtab1 dat -1, qa2 for 5 dat 0, 0 rof qscan sne found+qm*qc, found+qm*qc+qb2 seq <qtab3, found+qm*(qc-1)+qb2 jmp q0, }q0 sne found+qm*qa1, found+qm*qa1+qb2 seq <(qtab1-1), found+qm*(qa1-1)+qb2 djn.a q0, {q0 sne found+qm*qa2, found+qm*qa2+qb2 seq <qtab1, found+qm*(qa2-1)+qb2 jmp q0, {q0 sne found+qm*qb1, found+qm*qb1+qb1 seq <(qtab2-1), found+qm*(qb1-1)+(qb1-1) jmp q0, {q2 sne found+qm*qb3, found+qm*qb3+qb3 seq <(qtab2+1), found+qm*(qb3-1)+(qb3-1) jmp q0, }q2 sne found+qm*qb2, found+qm*qb2+qb2 seq <qtab2, found+qm*(qb2-1)+(qb2-1) djn.f q0, <found+qm*(qb2-1)+(qb2-1) seq >found, found+qm+(qb2-1) jmp q1, <found seq found+(qm+1)*(qc-1), found+(qm+1)*(qc-1)+(qb2-1) jmp q0, }q0 seq found+(qm+1)*(qa2-1), found+(qm+1)*(qa2-1)+(qb2-1) jmp q0, {q0 seq found+(qm+1)*(qa1-1), found+(qm+1)*(qa1-1)+(qb2-1) djn.a q0, {q0 jmz.f boot, found+(qm+1)*(qb2-1)+(qb2-1) q0 mul.b *q2, found q1 sne {qtab1, @found q2 add.b qtab2, found mov qtab3, @found found mov qtab3, }qm add #5, found djn -3, #20 djn.f boot, @found end
;redcode-94nop ;name V.shot ;originally named Veryshot for its specialness; The dot must be read aloud for no good reason ;) ;author NDusN ;which is how CoreWin display теsт ;strategy q and bishot utilizing Lore-style clear ;To my knowledge, the only other published warrior at this time that uses ;this sort of clear is Forgotten Lore II itself. Why haven't anyone else thought ;of using it despite it being handy in several situations ;assert CORESIZE == 8000 org qscan;from Core Warrior #92 qm equ 3722 qm2 equ 2681 qa1 equ ((qtab1-1-found)*qm2+1) qa2 equ ((qtab1-found)*qm2+1) qb1 equ ((qtab2-1-found)*qm2+1) qb2 equ ((qtab2-found)*qm2+1) qb3 equ ((qtab2+1-found)*qm2+1) qc equ ((qtab3-found)*qm2+1) dat 7, qb1 qtab2 dat 7, qb2 dat 7, qb3 for 13 dat 0, 0 rof step equ 15 step2 equ 4500 off equ 10 boot i for 6 ;boot clear mov 12, step2-off rof for 5 ;boot scan mov 12, step2 rof djn.f boot+step2+6, {3333 ;lore-style clear written from scratch because it's actually easy to understand gate dat step, step dat <2667, 8 data spl #16, {-2077 mov data, >gate mov *-1, }gate jmp -2, <-3 ;scanning part init add gate-off, scan scan sne 30, 4030 djn.f init, @scan mov.f scan, gate-off jmp data-off, {3333 for 13 dat 0, 0 rof qtab3 dat >-90, >qc for 5 dat 0, 0 rof dat 0, qa1 qtab1 dat -1, qa2 for 5 dat 0, 0 rof qscan sne found+qm*qc, found+qm*qc+qb2 seq <qtab3, found+qm*(qc-1)+qb2 jmp q0, }q0 sne found+qm*qa1, found+qm*qa1+qb2 seq <(qtab1-1), found+qm*(qa1-1)+qb2 djn.a q0, {q0 sne found+qm*qa2, found+qm*qa2+qb2 seq <qtab1, found+qm*(qa2-1)+qb2 jmp q0, {q0 sne found+qm*qb1, found+qm*qb1+qb1 seq <(qtab2-1), found+qm*(qb1-1)+(qb1-1) jmp q0, {q2 sne found+qm*qb3, found+qm*qb3+qb3 seq <(qtab2+1), found+qm*(qb3-1)+(qb3-1) jmp q0, }q2 sne found+qm*qb2, found+qm*qb2+qb2 seq <qtab2, found+qm*(qb2-1)+(qb2-1) djn.f q0, <found+qm*(qb2-1)+(qb2-1) seq >found, found+qm+(qb2-1) jmp q1, <found seq found+(qm+1)*(qc-1), found+(qm+1)*(qc-1)+(qb2-1) jmp q0, }q0 seq found+(qm+1)*(qa2-1), found+(qm+1)*(qa2-1)+(qb2-1) jmp q0, {q0 seq found+(qm+1)*(qa1-1), found+(qm+1)*(qa1-1)+(qb2-1) djn.a q0, {q0 jmz.f boot, found+(qm+1)*(qb2-1)+(qb2-1) q0 mul.b *q2, found q1 sne {qtab1, @found q2 add.b qtab2, found mov qtab3, @found found mov qtab3, }qm add #5, found djn -3, #20 djn.f boot, @found end
;redcode-94nop ;name Fort Destruction ;I originally reserved this name for a powerful stone/imp, but... ;author NDusN ;which is how CoreWin display теsт ;strategy Adding some diversity to the KotH hill: airbag and incen. bombs instead of imps ;It was independently developed, but ended up very similar to Behemot... ;assert CORESIZE == 8000 ;Placed #4 when entered the nop hill, but did not enter the draft hill :( ;Thanks to Steve Gunnell for providing me with a hill approximation benchmark which this warrior is optimized against org qscan;from Core Warrior #92 qm equ 3722 qm2 equ 2681 qa1 equ ((qtab1-1-found)*qm2+1) qa2 equ ((qtab1-found)*qm2+1) qb1 equ ((qtab2-1-found)*qm2+1) qb2 equ ((qtab2-found)*qm2+1) qb3 equ ((qtab2+1-found)*qm2+1) qc equ ((qtab3-found)*qm2+1) dat 7, qb1 qtab2 dat 7, qb2 dat 7, qb3 step equ 447 step2 equ 1959 step3 equ step2-65 off equ -109 bmoff equ 1 mov.i {0, #0 init mov jump+off, *2 mov split+off, <1 mov step*2-bmoff, @step-bmoff+1 add *esc, -1 mov }move+off, @-2 jmz.a init, {move+off esc djn.f clr+step3-step2, {5555 boot mov esc, esc+step2 bdata spl 1, esc+step2 spl 1, clr+step3+4 mov <clr+4, <-1 mov <split+3, <1 mov.i -3, #split+3+step2+off mov {boot, <bdata djn.f >bdata, {6666 dat 0, 0 split spl #2, step*2 move mov @0, }-1 jump jmp -step, {1 dat 0, 0 clr spl #step*3, >step*3+1 mov data, >data-16 djn.f -1, >data-16 data dat <2667, #21 for 24 dat 0, 0 rof qtab3 dat >-90, >qc for 5 dat 0, 0 rof dat 0, qa1 qtab1 dat -1, qa2 for 5 dat 0, 0 rof qscan sne found+qm*qc, found+qm*qc+qb2 seq <qtab3, found+qm*(qc-1)+qb2 jmp q0, }q0 sne found+qm*qa1, found+qm*qa1+qb2 seq <(qtab1-1), found+qm*(qa1-1)+qb2 djn.a q0, {q0 sne found+qm*qa2, found+qm*qa2+qb2 seq <qtab1, found+qm*(qa2-1)+qb2 jmp q0, {q0 sne found+qm*qb1, found+qm*qb1+qb1 seq <(qtab2-1), found+qm*(qb1-1)+(qb1-1) jmp q0, {q2 sne found+qm*qb3, found+qm*qb3+qb3 seq <(qtab2+1), found+qm*(qb3-1)+(qb3-1) jmp q0, }q2 sne found+qm*qb2, found+qm*qb2+qb2 seq <qtab2, found+qm*(qb2-1)+(qb2-1) djn.f q0, <found+qm*(qb2-1)+(qb2-1) seq >found, found+qm+(qb2-1) jmp q1, <found seq found+(qm+1)*(qc-1), found+(qm+1)*(qc-1)+(qb2-1) jmp q0, }q0 seq found+(qm+1)*(qa2-1), found+(qm+1)*(qa2-1)+(qb2-1) jmp q0, {q0 seq found+(qm+1)*(qa1-1), found+(qm+1)*(qa1-1)+(qb2-1) djn.a q0, {q0 jmz.f boot, found+(qm+1)*(qb2-1)+(qb2-1) q0 mul.b *q2, found q1 sne {qtab1, @found q2 add.b qtab2, found mov qtab3, @found found mov qtab3, }qm add #5, found djn -3, #20 djn.f boot, @found end
Semi-serious language list
I created the Semi-serious language list, An attempt to distinguish the good esolangs from the others (which is about 99% of esolangs and still increasing). If you're interested, please help out!