-4
\$\begingroup\$

Choose a language and write a program in the language that:

  • Take a valid program of the language as input,
  • Output a string(bytearray, etc.). It needn't be a valid program.
  • Only finite valid inputs result in longer/same-length(in bytes) output.
  • Different valid input, even if behave same, lead to different output.

Let length of your code as \$L\$ and number of inputs with longer/equal-length output as \$n\$. To win, you should be lowest on at least one of:

  • \$L\$,
  • \$N\$,
  • \$L+N\$,
  • \$L+\log_2(N+1)\$.

Notes

asked Jan 19, 2022 at 16:38
\$\endgroup\$
9
  • 1
    \$\begingroup\$ Please make the objective and rules of the challenge clearer. \$\endgroup\$ Commented Jan 19, 2022 at 16:56
  • 1
    \$\begingroup\$ @Binary198 Please make your request clearer :) \$\endgroup\$ Commented Jan 19, 2022 at 17:01
  • \$\begingroup\$ Well, what is the program intended to do exactly, and how does the scoring system work? \$\endgroup\$ Commented Jan 19, 2022 at 17:04
  • \$\begingroup\$ @Binary198 To compress all programs but finite ones. Some users would make four questions for four scoring way but it likely make a mess \$\endgroup\$ Commented Jan 19, 2022 at 17:07
  • \$\begingroup\$ So, you need to take a program as input and output a unique string that will be longer than or equal to in length than the input? Still, the scoring system is weird. What is \$N\,ドル and why are there multiple scoring ways? I would usually just go with one. \$\endgroup\$ Commented Jan 19, 2022 at 17:10

1 Answer 1

3
\$\begingroup\$

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.

answered Jan 19, 2022 at 17:17
\$\endgroup\$
7
  • \$\begingroup\$ Do you save one byte iff length>1500? \$\endgroup\$ Commented Jan 19, 2022 at 17:21
  • \$\begingroup\$ @l4m2 Yes, exactly \$\endgroup\$ Commented Jan 19, 2022 at 17:22
  • \$\begingroup\$ You don't need the f= (I guess you were going to go with a recursive function which would need it, and left it in). \$\endgroup\$ Commented Jan 19, 2022 at 19:02
  • 1
    \$\begingroup\$ Using recursion (which I think we may assume to have no limit set for code-golf purposes), you could do f=lambda b,s=0,l=0:b and f(b[1:],255*s+b[0],l+(l!=1500))or s.to_bytes(l,"big") for \$L=78\$ TIO \$\endgroup\$ Commented Jan 19, 2022 at 19:09
  • \$\begingroup\$ Hmm, maybe not - I don't understand this error \$\endgroup\$ Commented Jan 19, 2022 at 19:26

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.