20

44 combinators, score: \$\approx f_{\omega+1}(3\uparrow\uparrow\uparrow\uparrow3)\$ (S (S (K S) (S S K)) (K I)) arrow_diag (S (S (K S) K) (S (S (K S) K) I)) S K where arrow_diag = S (S (S I (K (S (S (K S) (S (K (S I)) K)) (K I)))) (S (K (S I)) K)) I This reduces to an expression of S (S (S (...(S K)...))) which contains n copies of S, where n is the value ...


8

Python 3, (1, 149, 945, 1118, 102) from collections import Counter # history: a list of tuple of (guess, feedback) # feedback: a list of length 5, each element can be MISS, CLOSE, or MATCH def play(history): # Hard coded first guess turn = len(history) + 1 if turn == 1: return 'trace' # When there are few words left remaining_words = [word ...


6

JavaScript (ES6), 32 bytes, 4 changes, cracked by Dom Hastings Should be easier to crack than it was to build. :-p There are 4 intermediate steps, for a total of 6 programs. _=>(0x63044+185886).toString(36) Try it online!


6

C++ (gcc) Performs a brute force search. Its strategy is to greedily choose rectangles that yield the least amount of points. Although counter-intuitive, this strategy is seemingly effective. To give the search more variation, the branch size is also limited to 4. Memoization is used to prevent the same board state from re-occurring (due to applying the same ...


6

JavaScript (ES6), 400 bytes, 104 words _=>`oï�ño�÷� ��¯�¯�¯9�:�@¯p_�O��S_ÀOÅoË��? hñ���WñÓÖÛò9?F4ôhïF�ôÃ�I4÷Ü�~~øgoSvõ5?VÉöÓßlSüáï��ù&Ϥ�úa¦¦ú¼�¸±ð�7ñl�ýlqýi6ýº@ó¹!ôe�ôj�ø� ø:�øº@õ� õ<¹öSeü6�üe ù��ù��ù+�ù.�ù1 ù15ùd:ùº@ú�@þZ�ð�C���¦ñl�ï��VýeÛÜ �òlÃ�+ÃÖôs]¯Fq ôÆ�Ï�CPø 4���9ø5ÙoSS�õmµ�l7 ü=4���0ù#p_�±+ù+£�¦¦�ú���±c�ðE:eð£É5ñ�p:ó]s�`.replace(r=/./g,...


5

BQN ┌─ ╵ 1 2 3 4 5 6 7 8 9 1 56 407 861 722 210 44 13 1 ┘ The strategy is very basic, this just chooses the first word in the word lists that is still possible according to the previous results. I will improve on that later, but for now I just wanted to get the "infrastructure" up. #!/usr/bin/env bqn # ...


5

Octave. Purely random approach This applies moves randomly until no further moves are possible. Then tries a new sequence of moves until a time limit is reached. The best sequence of moves is chosen output. Pseudo-code: Generate all possible rectangle sizes. Permute the list of rectangle sizes randomly with uniform distribution. Set s to 0. Increase s. If ...


5

Python3, 659 bytes: from time import* r,l=range,len s=lambda v:[(t,x,y)for x in r(l(v))for y in r(x+1,l(v)+1)if(t:=sum(v[x:y]))<=10 and any(v[x:y])] def f(b,p=[]): u=[] for x in r(l(b)): for q,w,e in s(b[x]): if q==10:u+=[(x,x+1,w,e)] elif n:=next((y for y in r(l(b)+1)if y>x and sum(sum(m[w:e])for m in b[x:y])==10),0):u+=[(x,n,w,e)] for g in ...


5

Python, 2013 bytes Uses numpy and ffts to generate moves by convolution, then starts a depth first search of all possible moves, with a timeout to limit the search (definitely not terminating any time soon without that). Caches move generation and step results based on the input board. Prefers small moves first to knock out large numbers. I also tried random ...


5

JavaScript (Node.js), 399 bytes, 96 words Simple zlib compression with base-64 encoding. Returns a single string of words separated with _. _=>require('zlib').inflateRawSync(Buffer("HY+BCgQhCEQ/dTBiOylz0TrY/fqbDppnipYjHbLciESRLsQcKE0JXSjOE/khmQTKs1C1Cao3J2bLE/YXl+DSGrhCK59hYG2P8eB6hhOxE83bPnidjFHIVN734sjHI7RAU6ibM7oEXRa6V0o7YQ8xjXUP/56QSSxu2EN5zdOW+...


4

C++ #include <algorithm> using std::sort; #include <functional> using std::reference_wrapper; #include <initializer_list> using std::initializer_list; #include <iostream> using std::cout; using std::ostream; #include <numeric> using std::accumulate; #include <vector> using std::vector; struct Cell { unsigned ...


4

Pari/GP, 28 bytes, 1 step, cracked by M Virts Let's start from an easy one. go="co";lf="de";print(go,lf) Try it online!


4

Bubblegum, 147 148 149 words, 400 bytes 00000000: 15cc 810a c520 0885 e157 3dc6 5893 4a87 ..... ...W=.X.J. 00000010: d685 f6f4 f704 f9fd cd41 b25f e990 227a .........A._.."z 00000020: d4a6 0999 3e08 2f0d 459a 10eb 2855 898a ....>./.E...(U.. 00000030: 4d67 260a e321 6d9f e443 b9db 9ce0 2961 Mg&..!m..C....)a 00000040: 8e4b ab7e 47c1 e5d5 89d5 ...


4

Charcoal, 400 bytes, 139 words Try it online! Link is to verbose version of code. Just a compressed string based on @ovs's Bubblegum word list, except deciding which nine words to drop was interesting to say the least, as deleting some words actually increases the byte count!


3

Charcoal, 7 bytes * 9 steps = score 63, cracked by Dom Hastings ⍘⍘$zPγβ Try it online! I had to use the full dictionary for this, because there is only one common word that is one source character away from the program for golf and that is gold, after which you would get stuck, however the words nearer the code end are less uncommon.


3

Pari/GP, 26 bytes, 3 changes, cracked by M Virts Another easy one, using a similar trick. g=c;f=e;l=d;print(g,o,l,f) Try it online! M Virts found a simple answer with only two changes that I didn't expect. Here is my intended solution:


3

Vyxal, 4 bytes, 9 changes, crick craked by Aaroneous Miller «ƛ↔ƒ Try it Online! This was kinda fun to create. I'll see what happens! Programs: «ƛ↔ƒ outputs code «ƛ↔ṙ outputs coal «ƛ℅ṙ outputs fear «ƛ℅ṫ outputs feat «ƛFṫ outputs dent «ƛF` outputs dell «ƛ¾` outputs foci `ƛ¾` outputs program `ƛ₅` outputs then `»₅` outputs golf Try it Online! (last two ...


3

Python 3.8 (pre-release), \$L=79\$, \$N\approx255^{1500}\$ -3 bytes thanks to @Jonathan Allan f=lambda b,s=0,l=0:b and f(b[1:],255*s+b[0],l+1)or s.to_bytes(l-(l>1500),"big") Try it online! Python source code can't contain null bytes. This converts the input (bytestring) to base 255 and then back to bytes. After 1500 removes a redundant byte.


3

Python 3, probably fε0(99) I have no idea def f(n,d,a,i): if d < 0 or i >= len(a): return n k = a[i] if type(k) == int: if k < 0: a[i] = [-2]*n a = f(n,d,a,i+k+2) else: a[i] -= 1 else: a[i] = f(n,d-1,k,0) return a def g(n): d=n a=[-2]*n while type(a) != int: a = f(n,d,a,0) n += 1 print(g(99)) Edit: Accidentally ...


3

Vyxal, cracks emanresu A’s answer «ƛ↔ƒ `ƛ↔ƒ `ƛ₅ƒ `»₅ƒ Try it Online! Note: The final two characters in each line in the linked program is just so that each one can be ran alongside one another; they aren’t required for the individual programs. The first change is changing the first character, which changes the compressed string into a dictionary compressed ...


2

JavaScript (Node.js) [ 1, 101, 650, 1000, 465, 87, 11 ] A simple algorithm computing the list of remaining possible words and picking either the first one if there are less than 3 of them, or the one located at a precomputed index otherwise. (This is therefore playing in 'hard mode'.) The precomputed values are based on a hash of the list of remaining words ...


2

Rust Uses breadth-first beam search, with a heuristic evaluation based on greedily eliminating as many entries as possible while ignoring newly-created boxes. Solves each board in parallel. You can reduce beam_size in solve if you need to in order to meet the time budget (I know it should really be a command-line flag). src/main.rs use fnv::FnvHashMap; use ...


2

369. Add++, 163 bytes, A001015 ;you know what is this `y ;activate y ?^7 ;active = ARG to the power of 7 `x ;activate x oy ;output x! y:0 ;x is 0, why active? ;[X]HTML can't be parsed with regex Next sequence! Try it online!


2

BQN, Score: 4 ≠+´⊒ Run online! The occurrence count builtin ⊒ calculates the cost of each character decremented by 1. To adjust for that we can either add 1 to each cost or add the length ≠ to the sum. The latter turns out to be a byte shorter.


2

brainfuck, 24 bytes, outputs (1063-1)/3 +[+++++>+<]++++[++++>.<] Try it online! This creates 51, the ASCII value of 3, as 255/5, and then outputs it 63=252/4 times. +[+++++>+>+<<]>[->.<] falls just short of working: in 21 bytes, it outputs 3 51 times for ≈3.33×1050, while 25621≈3.74×1050.


2

Pyth, \$>\operatorname{Laver}^{\operatorname{Laver}^{\operatorname{Laver}^{\operatorname{Laver}^{\operatorname{Laver}^{131072}(131072)}(131072)}(131072)}(131072)}(131072)/87^3\$ =kC"𠀀"=d-C"B"C"A"D:HNTK?%TH:H:HN-Td+Td%+NdHRKDOYJdW:J-ddYJ=+J)RJFQkFzkFGkFZk=kFOkk)))k Original Python: def laver(size, x, y): if y % size == 0: ...


2

JavaScript (Node.js), 26 bytes f=n=>n?f(--n)+'+4/4':'4-4' Try it online! Quite simple and self explanatory. uses \$2n+2\$ 4's for any number \$n\$


2

Pari/GP, cracks alephalpha's answer Well someone has to do it... One step:remove the comma. go="co";lf="de";print(go,lf) go="co";lf="de";print(go lf) Try it online!


2

Perl 5 + -M5.10.0, 43 bytes, 15 changes: score 645 Yeah, I don't think this one's going to be a winner! Might be too easy anyway, as I'm pretty sure there's a shorter route than the one I ended up taking but I couldn't quite get it working! $_=$!=35;/.(.)..(.). (.)(.)/;say$2.$1.$3.$4 Try it online!


2

Pari/GP, 2 steps, cracks alephalpha's second answer first spacify the first comma to output gode g=c;f=e;l=d;print(g o,l,f) then the last for golf g=c;f=e;l=d;print(g o,l f) Try it online!


Only top voted, non community-wiki answers of a minimum length are eligible