6
\$\begingroup\$

What general tips do you have for golfing in S.I.L.O.S? I'm looking for ideas which can be applied to code-golf problems and which are also at least somewhat specific to S.I.L.O.S (e.g. "remove comments" is not an answer).

Please post one tip per answer.

S.I.L.O.S can be run here.

\$\endgroup\$

3 Answers 3

2
\$\begingroup\$

Abuse the preprocessor

All SILOS programs can optionally have a macro statement on the second line

Consider the following program... One of my favorite SILOS submissions by betseg.

a=97
def q print z bottle v beer L Line g wall x IntNoLine h the c around
qL 99 zs of v on h g, 99 zs of v.
lbls
q Take one down and pass it c, 
a+1
qx a
qL  zs of v on h g.
qx a
q  zs of v on h g, 
qx a
qL  zs of v.
a-2
if a s
qL Take one down and pass it c, 1 z of v on h g.
qL 1 z of v on h g, 1 z of v.
q Go to h store and buy some more, 99 zs of v on h g.

Look at that savings Try it out!

\$\endgroup\$
1
\$\begingroup\$

Never sometimes divide by 0.

Consider a challege where we should output the input if it is not 0 and output -1 otherwise. We could do the following.

S.I.L.O.S, 50 bytes

readIO
if i b
print -1
GOTO c
lblb
printInt i
lblc

Try it online!

However, that is far from optimal. The "superior" solution would be this.

S.I.L.O.S, 33 bytes

readIO
j=i
i/i
j=j+i-1
printInt j

Try it online!

SILOS will quietly ignore the division by 0, which results in a no-op.

\$\endgroup\$
0
\$\begingroup\$

Never declare variables

There is no need to declare a variable. All variables are automatgically initialized to 0.
Hence, this-

a=0
a=97
printInt a

Is the same as this

a=97
printInt a
\$\endgroup\$

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.