43
\$\begingroup\$

The printable ASCII characters (hex codes 20 to 7E) in order are:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

(Note that space is in there.)

This string clearly contains all the printable ASCII characters at least once in increasing order when read from left to to right, but not in decreasing order.

The string reversed:

~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! NORMAL: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

contains all the printable ASCII characters at least once both in increasing and decreasing order. In other words, when the characters are valued with their numeric code, the longest increasing and longest decreasing subsequences have length 95 (the number of printable ASCII characters).

Challenge

Choose a contiguous subset of N printable ASCII characters, such as LMNOP (N = 5). Write a program using only those N characters whose output contains all 95 ASCII characters in increasing and decreasing order like the example above.

The winner is the submission with the lowest N. In case of ties the shortest code in bytes wins.

Notes

  • A contiguous subset means a set of the printable ASCIIs that all appear in an unbroken line, such as LMNOP or 89:;<=>.
  • Your contiguous subset may "loop around" from ~ to space, but this incurs a +3 penalty on N. So {|}~ has N = 4, but {|}~ ! has N = 6 + 3 = 9.
  • Your program may only contain the N printable ASCII characters from the contiguous subset you've selected. They do not all have to appear and may appear multiple times in any order. (All non-printable ASCII and all non-ASCII is not allowed. This means tabs and newlines are not allowed.)
  • Your output may only contain printable ASCII characters and must be less than 10000 characters long.
  • Your output's longest increasing and decreasing subsequences must both have length 95 (as explained above).
  • Output to stdout. There is no input.
  • N is a positive integer less than 96.
\$\endgroup\$
12
  • 47
    \$\begingroup\$ At last, a challenge built for Brainfuck! \$\endgroup\$ Commented Aug 5, 2014 at 22:26
  • 1
    \$\begingroup\$ Given the kinds of answers this is attracting (which are clearly the optimal way), it might be interesting for the score to be some combination of program shortness and number of characters used. Perhaps minimizing n*m where n is the size of the subset of ascii, and m is the length of the program? \$\endgroup\$
    – J.P.
    Commented Aug 6, 2014 at 10:52
  • 2
    \$\begingroup\$ @J.P. "The winner is the submission with the lowest N. In case of ties the shortest code in bytes wins." General consensus is that it is bad form to change the rules at a late stage. The winning answer will be the shortest program in Unary (which is basically the shortest program in Brainfuck, just coded differently.) \$\endgroup\$ Commented Aug 6, 2014 at 12:36
  • 2
    \$\begingroup\$ I would suggest, though, that those posting in Unary might like to put an approximation of their code length in scientific notation, rather than making us squint to count the digits. \$\endgroup\$ Commented Aug 6, 2014 at 12:40
  • 2
    \$\begingroup\$ Welcome to CodeGolf, where 90% of all questions are hijacked. ;) \$\endgroup\$
    – TwoThe
    Commented Aug 7, 2014 at 10:29

17 Answers 17

101
\$\begingroup\$

Unary, N=1

4132527913354820031118363262102424570092493175835499123283719 (4.1325279e+60) bytes

Source code in unary is obviously too large to post here. It can be easily reproduced by typing out (or generating) a file filled with "0"s of the same length as the number of bytes above.

Here is the binary representation:

1010010010010110011000010010010010010010010010001111000000010010010010010110011000010010010010010010010010010010010010010010010010010010010001111000110011001010001100010000000111001110011001011100000111

And the equivalent Brainf**k code (linebreaks for clarity):

++++[->++++++++<]>>
+++++[->+++++++++++++++++++<]>
[-<+<.+>>]<
[-<-.>]

Output:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 

EDIT: Golfed out 9.097887e+87 unnecessary characters.

\$\endgroup\$
29
  • 17
    \$\begingroup\$ Damn. Here I was feeling clever for getting N=2. +1, and also for golfing out more characters than there are atoms in the universe. \$\endgroup\$
    – nneonneo
    Commented Aug 6, 2014 at 3:08
  • 61
    \$\begingroup\$ Hahaha +1 just for "Golfed out 9.097887e+87 unnecessary characters." \$\endgroup\$
    – Doorknob
    Commented Aug 6, 2014 at 9:15
  • 8
    \$\begingroup\$ I didn't know "Unary" existed, so I was going to invent it, except I was going to just use the letter "O". Then I was going to write a database in it. Now that this answer has introduced me to it, I guess I can just make a variant of Unary instead... Onary? \$\endgroup\$ Commented Aug 6, 2014 at 13:26
  • 6
    \$\begingroup\$ Show us the code or it's not an answer. :-) More to the point: this answer is basically just a (well-supported) claim that such a program exists in an abstract space of possible programs, but I claim the physical instantiation of such a program is impossible and thus this is a non-solution. :-) \$\endgroup\$ Commented Aug 6, 2014 at 18:46
  • 6
    \$\begingroup\$ @R.. A decompressor that assumes all characters are the same is not cheating, if you create a special compressed file format that only allows a single character. In that case, the fact that all characters are the same is a hard fact, not an assumption, so the decompressor can rely on that fact. \$\endgroup\$
    – hvd
    Commented Aug 8, 2014 at 8:27
53
\$\begingroup\$

Brainfuck, N=2

----------------------------------------------------------------------------------------------------------------------------------.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.

24,383 bytes. Uses only - and . (ASCII 45 and 46). Try it here: http://esoteric.sange.fi/brainfuck/impl/interp/i.html. Can probably be parsed as Morse code with the right spaces.

Requires an interpreter adhering to the traditional definition of Brainfuck, which uses an array of (at least) 30,000 byte cells, all initialized to zero.

\$\endgroup\$
6
  • \$\begingroup\$ Very good. This occured to me after I went to bed :-D \$\endgroup\$ Commented Aug 6, 2014 at 5:45
  • \$\begingroup\$ How does this work? There's only one output at the end, I don't understand how it can output the whole 95 character string. \$\endgroup\$
    – Lou
    Commented Aug 6, 2014 at 8:59
  • 4
    \$\begingroup\$ @LeoKing you need to be more observant. there are 256-126=130 -, then the descending part .-.-.etc then the ascending part (groups of 255 - followed by a .) As far as I can tell it's all there. Also see edit on my answer for explanation. \$\endgroup\$ Commented Aug 6, 2014 at 9:25
  • 1
    \$\begingroup\$ Oh sorry, when I scrolled along I thought it was just a string of - with just one . at the end :). My bad. \$\endgroup\$
    – Lou
    Commented Aug 6, 2014 at 9:48
  • 4
    \$\begingroup\$ +1 "Can probably be parsed as Morse code with the right spaces." \$\endgroup\$
    – Amory
    Commented Aug 8, 2014 at 15:18
36
\$\begingroup\$

Unary, N=1

14680262330376163203871465704220787333741951071 bytes

Uses only the '0' byte (ASCII 49).

Golfed about 4.1325279×1060 bytes out of @Comintern's solution. Credit still to him :)

In the original Brainfuck:

++++++++[->++++<]>
[>+>+++<<-]>>-
[-<.+<+>>]<<
[>-.<-]
\$\endgroup\$
4
  • 6
    \$\begingroup\$ LOL! Love the byte reduction counts in Unary, they always make me laugh. Nice golf of the underlying Brainfuck, +1 \$\endgroup\$
    – Comintern
    Commented Aug 6, 2014 at 4:21
  • \$\begingroup\$ It's a shame it's still 14,680,262,330,376,163,203,871,465,694,220 bytes longer than the maximum (10,000). Maybe you can golf a bit more? \$\endgroup\$
    – Gabe
    Commented Aug 8, 2014 at 5:36
  • 3
    \$\begingroup\$ @Gabe: The output is limited to 10,000 characters. The program length is not bounded. \$\endgroup\$
    – nneonneo
    Commented Aug 8, 2014 at 8:12
  • \$\begingroup\$ @nneonneo: Oh, well carry on then! \$\endgroup\$
    – Gabe
    Commented Aug 8, 2014 at 12:13
25
\$\begingroup\$

CJam - N=3; 7659 bytes

''(((((((''((((((''(((((''((((''(((''((''('''(')'))')))'))))')))))'))))))')))))))'))))))))')))))))))'))))))))))')))))))))))'))))))))))))')))))))))))))'))))))))))))))')))))))))))))))'))))))))))))))))')))))))))))))))))'))))))))))))))))))')))))))))))))))))))'))))))))))))))))))))')))))))))))))))))))))'))))))))))))))))))))))')))))))))))))))))))))))'))))))))))))))))))))))))')))))))))))))))))))))))))'))))))))))))))))))))))))))')))))))))))))))))))))))))))'))))))))))))))))))))))))))))')))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))))'))))))))))))))))))))))))))))))')))))))))))))))))))))))))))))'))))))))))))))))))))))))))))')))))))))))))))))))))))))))'))))))))))))))))))))))))))')))))))))))))))))))))))))'))))))))))))))))))))))))')))))))))))))))))))))))'))))))))))))))))))))))')))))))))))))))))))))'))))))))))))))))))))')))))))))))))))))))'))))))))))))))))))')))))))))))))))))'))))))))))))))))')))))))))))))))'))))))))))))))')))))))))))))'))))))))))))')))))))))))'))))))))))')))))))))'))))))))')))))))'))))))')))))'))))')))'))')'(''''(''((''(((''((((''(((((''((((((''(((((((

Try it at http://cjam.aditsu.net/

\$\endgroup\$
3
  • 14
    \$\begingroup\$ What..just what... \$\endgroup\$ Commented Aug 5, 2014 at 22:39
  • 2
    \$\begingroup\$ @Calvin'sHobbies just incrementing and decrementing characters :) \$\endgroup\$ Commented Aug 5, 2014 at 22:39
  • 57
    \$\begingroup\$ Are you sure this isn't LISP? \$\endgroup\$
    – avalancha
    Commented Aug 6, 2014 at 9:27
18
\$\begingroup\$

Brainf**k, N=4

My first brainfuck program. Uses 3 characters out of the block +,-. (Ascii 43 to 46.)

410 bytes (one . can be deleted from the program if the double ~~ can be reduced to a single ~.)

Here's the list of commands in that area of the ASCII table (I don't need the input command):

+   increment (increase by one) the byte at the data pointer.
-   decrement (decrease by one) the byte at the data pointer.
.   output the byte at the data pointer.
,   accept one byte of input, storing its value in the byte at the data pointer.

Fortunately the remaining commands <>[] (moving data pointer and performing conditional jumps) are not required!

Split into 3 lines for clarity: 1: Increment until the data reaches 32. 2: Output and increment until data reaches 126. 3: Output and decrement until data reaches 32.

++++++++++++++++++++++++++++++++

.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.

.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

Output

 !"#$%&'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 

Edit N=2

Per @nneonneo's answer, it is possible to replace each + with 255 -signs for N=2. some rearrangement of the code and output (displaying down then up) means the first line can be reduced to 256-126=130 - signs. This occurred to me after I went to bed, and nneoneo beat me to it. https://codegolf.stackexchange.com/a/35801/15599

\$\endgroup\$
3
  • \$\begingroup\$ Yes, you can use ~ instead of ~~ since the increasing and decreasing subsequences would still be there. \$\endgroup\$ Commented Aug 5, 2014 at 23:24
  • \$\begingroup\$ There had to be a Brainfuck program somewhere for this question ;) \$\endgroup\$ Commented Aug 6, 2014 at 3:51
  • \$\begingroup\$ beat me to it.... \$\endgroup\$
    – Sarima
    Commented Aug 6, 2014 at 6:07
8
\$\begingroup\$

C; N = 43 = 40 + 3

Here I avoid such common characters as + - * /, the digits 0-9, comma , and semicolon ;.

So I was forced to express various numbers using only the operations & % ~.

Further golfing may be possible (finding smallest representations for the numbers 63 and 95 is an exercise for the reader).

main(){
if (printf(" !"))
if (putchar('"'))
if (printf("#$%%&'"))
if (putchar('i'%(~' '&'a')))
if (putchar('j'%(~' '&'a')))
if (putchar('k'%(~' '&'a')))
if (putchar('l'%(~' '&'a')))
if (putchar('m'%(~' '&'a')))
if (putchar('n'%(~' '&'a')))
if (putchar('o'%(~' '&'a')))
if (putchar('p'%(~' '&'a')))
if (putchar('q'%(~' '&'a')))
if (putchar('r'%(~' '&'a')))
if (putchar('s'%(~' '&'a')))
if (putchar('t'%(~' '&'a')))
if (putchar('u'%(~' '&'a')))
if (putchar('v'%(~' '&'a')))
if (putchar('w'%(~' '&'a')))
if (putchar('x'%(~' '&'a')))
if (putchar('y'%(~' '&'a')))
if (putchar('z'%(~' '&'a')))
if (putchar('{'%(~' '&'a')))
if (putchar('|'%(~' '&'a')))
if (putchar('}'%(~' '&'a')))
if (putchar('~'%(~' '&'a')))
if (putchar('~'%(~'!'&'a')))
if (putchar(~(~('~'%(~'!'&'a'))&~(~' ' & '!'))))
if (putchar(~'!'&'a'))
if (putchar(~' '&'a'))
if (putchar(~' '&'b'))
if (putchar(~' '&'c'))
if (putchar(~' '&'d'))
if (putchar(~' '&'e'))
if (putchar(~' '&'f'))
if (putchar(~' '&'g'))
if (putchar(~' '&'h'))
if (putchar(~' '&'i'))
if (putchar(~' '&'j'))
if (putchar(~' '&'k'))
if (putchar(~' '&'l'))
if (putchar(~' '&'m'))
if (putchar(~' '&'n'))
if (putchar(~' '&'o'))
if (putchar(~' '&'p'))
if (putchar(~' '&'q'))
if (putchar(~' '&'r'))
if (putchar(~' '&'s'))
if (putchar(~' '&'t'))
if (putchar(~' '&'u'))
if (putchar(~' '&'v'))
if (putchar(~' '&'w'))
if (putchar(~' '&'x'))
if (putchar(~' '&'y'))
if (putchar(~' '&'z'))
if (putchar(~' '&'{'))
if (putchar(~' '&'|'))
if (putchar(~' '&'}'))
if (putchar(~' '&'~'))
if (putchar(~(~(~' '&'~')&~(~' ' & '!'))))
if (putchar(~('!'%' ')&'a'))
if (printf("abcdefghijklmnopqrstuvwxyz{|}~}|{zyxwvutsrqponmlkjihgfedcba"))
if (putchar(~('!'%' ')&'a'))
if (putchar(~(~(~' '&'~')&~(~' ' & '!'))))
if (putchar(~' '&'~'))
if (putchar(~' '&'}'))
if (putchar(~' '&'|'))
if (putchar(~' '&'{'))
if (putchar(~' '&'z'))
if (putchar(~' '&'y'))
if (putchar(~' '&'x'))
if (putchar(~' '&'w'))
if (putchar(~' '&'v'))
if (putchar(~' '&'u'))
if (putchar(~' '&'t'))
if (putchar(~' '&'s'))
if (putchar(~' '&'r'))
if (putchar(~' '&'q'))
if (putchar(~' '&'p'))
if (putchar(~' '&'o'))
if (putchar(~' '&'n'))
if (putchar(~' '&'m'))
if (putchar(~' '&'l'))
if (putchar(~' '&'k'))
if (putchar(~' '&'j'))
if (putchar(~' '&'i'))
if (putchar(~' '&'h'))
if (putchar(~' '&'g'))
if (putchar(~' '&'f'))
if (putchar(~' '&'e'))
if (putchar(~' '&'d'))
if (putchar(~' '&'c'))
if (putchar(~' '&'b'))
if (putchar(~' '&'a'))
if (putchar(~'!'&'a'))
if (putchar(~(~('~'%(~'!'&'a'))&~(~' ' & '!'))))
if (putchar('~'%(~'!'&'a')))
if (putchar('~'%(~' '&'a')))
if (putchar('}'%(~' '&'a')))
if (putchar('|'%(~' '&'a')))
if (putchar('{'%(~' '&'a')))
if (putchar('z'%(~' '&'a')))
if (putchar('y'%(~' '&'a')))
if (putchar('x'%(~' '&'a')))
if (putchar('w'%(~' '&'a')))
if (putchar('v'%(~' '&'a')))
if (putchar('u'%(~' '&'a')))
if (putchar('t'%(~' '&'a')))
if (putchar('s'%(~' '&'a')))
if (putchar('r'%(~' '&'a')))
if (putchar('q'%(~' '&'a')))
if (putchar('p'%(~' '&'a')))
if (putchar('o'%(~' '&'a')))
if (putchar('n'%(~' '&'a')))
if (putchar('m'%(~' '&'a')))
if (putchar('l'%(~' '&'a')))
if (putchar('k'%(~' '&'a')))
if (putchar('j'%(~' '&'a')))
if (putchar('i'%(~' '&'a')))
if (printf("'&%%$#"))
if (putchar('"'))
if (printf("! "))
{}
}

The ascii subset is 32...41 and 97...126.

I am not sure whether newline characters are allowed in code; if not, just remove them.

\$\endgroup\$
2
  • \$\begingroup\$ Newlines are not allowed but as you can remove them in C it's not an issue here. \$\endgroup\$ Commented Aug 7, 2014 at 20:46
  • \$\begingroup\$ Nice. Should be the minimum N for a C solution outside of abusing the linker - that whole main() thing... \$\endgroup\$
    – Comintern
    Commented Aug 8, 2014 at 0:12
6
\$\begingroup\$

Whirl, N=2, 6486 bytes

Using only 2 characters, 01.

000110000011110000100000100000100000100000100000100000100000100000100000100110000011100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001111100000100010011110001000000011111000001000100111100010000000111110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001001111000100000001000011110000010001000001100

Output :

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 

I think I can golf down more using loops, but coding with 0s and 1s was horrible, so I won't do it.

Commented

00011000001111 // init math.val to O
0000100000100000100000100000100000100000100000100000100000100 // math.val to 32, mem to 32
110000 // set IO to print
0111001111000100000001111100000100 // print ascii(32), mem to 33
01001111000100000001111100000100 // print ascii(33), mem to 34
01001111000100000001111100000100 // print ascii(34), mem to 35
01001111000100000001111100000100 // print ascii(35), mem to 36
                                 // skipped
01001111000100000001111100000100 // print ascii(l23), mem to l24
01001111000100000001111100000100 // print ascii(l24), mem to l25
01001111000100000001111100000100 // print ascii(l25), mem to l26
0100 // print ascii(l26)
111100010000000100001111000001000100 // mem to l25, print ascii(l25)
111100010000000100001111000001000100 // mem to l24, print ascii(l24)
111100010000000100001111000001000100 // mem to l23, print ascii(l23)
                                     // skipped
111100010000000100001111000001000100 // mem to 34, print ascii(34)
111100010000000100001111000001000100 // mem to 33, print ascii(33)
111100010000000100001111000001000100 // mem to 32, print ascii(32)
0001100 // KTHXBAI

Note that there's O and l as 0 and 1.

\$\endgroup\$
5
\$\begingroup\$

C; N = 61 = 58 + 3

To compensate for using such a large subset, I golfed my code.

a;main(d){for(;d&&++a,d||--a;putchar(a+31),a-95||--d);}

The ASCII subset is 32...59 and 97...126.

It was a fun challenge to avoid the = character!

\$\endgroup\$
2
  • \$\begingroup\$ Oh, nice, though anatolyg's answer cleverly manages to avoid ;. You might be able to use that to expand your answer, without it becoming a copy of the other one. \$\endgroup\$
    – hvd
    Commented Aug 8, 2014 at 8:35
  • 1
    \$\begingroup\$ No......... ;-) \$\endgroup\$
    – anatolyg
    Commented Aug 8, 2014 at 18:14
4
\$\begingroup\$

Python 2.7 N=45=42+3

This uses string.printable, sorts and spits it out over stdout. I save a few characters by inserting the . in stdout.write by using eval and string formating using the ord values of characters I could use.

from string import printable
from sys import stdout
eval("map(stdout%swrite,sorted(printable,None,ord))"%chr(ord('+') + ord('z')-ord('w') ))
print ""
eval("map(stdout%swrite,reversed(sorted(printable,None,ord)))"%chr(ord('+') + ord('z')-ord('w') ))

Out with the old - N=49=46+3

Unfortunately, while python includes the string.printable list, this isn't in ascii order, and there is no way to use it without a * or a ., so it takes less characters to do it manually.

Using the character range:

abcdefghijklmnopqrstuvwxyz{|}~ AND   !"#$%&'()*+,-.

print ''.join((chr(i)
  for i in range(
    len('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
    len('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
  )))
print ''.join((chr(i)
  for i in range(
    len('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
    len('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
    -len('x')
  )))

The obvious version: N=63=60+3

This is the obvious version using the character range:

[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   AND   !"#$%&'()*+,-./01234567 `:

print ''.join([chr(i) for i in range(0x20,0x7E)])
print ''.join(reversed([chr(i) for i in range(0x20,0x7E)]))
\$\endgroup\$
6
  • \$\begingroup\$ A bit nitpicky comment, but you didn't include 1 in your first character range. You got me wondering for a while why would you need a 0. \$\endgroup\$
    – Dunno
    Commented Aug 6, 2014 at 20:32
  • \$\begingroup\$ @Dunno Thanks for pointing it out, but I dunno why I even used a 1 when len('x') saves me another 2 characters. \$\endgroup\$
    – user8777
    Commented Aug 7, 2014 at 3:32
  • \$\begingroup\$ I've just realized that your code uses newlines. This is not allowed since they aren't printable ascii. \$\endgroup\$ Commented Aug 7, 2014 at 6:04
  • \$\begingroup\$ @Calvin'sHobbies Sadly python isn't very golf friendly, I'll see what I can do. \$\endgroup\$
    – user8777
    Commented Aug 7, 2014 at 6:06
  • 1
    \$\begingroup\$ It looks like your import solution will only work if you have ;, which adds a substantial amount of characters. \$\endgroup\$
    – Gabe
    Commented Aug 8, 2014 at 5:35
3
\$\begingroup\$

Python 2.7 N=28+12+3=43

Using characters cdefghijklmnopqrstuvwxyz{|}~ and then wrapping around to !"#$%&'()*+

exec "print ''"
   + chr(ord('+') + len('xxx'))        # .
   + "join(chr(i) for i in r"
   + chr(ord('c') + ~len('x'))         # a
   + "nge(ord(' ')"                    # 32
   + chr(ord('+') + len('x'))          # ,
   + " ord('~') + len('x'))) + ''"     # 127
   + chr(ord('+') + len('xxx'))        # .
   + "join(chr(i) for i in r"
   + chr(ord('c') + ~len('x'))         # a
   + "nge(ord('~')"                    # 126
   + chr(ord('+') + len('x'))          # ,
   + " ord(' ') + ~len('')"            # 31
   + chr(ord('+') + len('x'))          # ,
   + " + ~len('')))"                   # -1

In order to avoid using ,.- I had to use some tricks. I used exec so I can make the code into strings which allowed me to use chr(ord('+') + len('xxx')) for . and chr(ord('+') + len('x')) for ,. Any place I needed a -1, I used ~0 in the form of ~len(''). To avoid a, I used chr(ord('c') + ~len('x')) (99 - 2).

The string that gets composed has N=48, using characters abcdefghijklmnopqrstuvwxyz{|}~ and then wrapping around to !"#$%&'()*+,-.

print ''.join(chr(i) for i in range(ord(' '), ord('~') + len('x')))
    + ''.join(chr(i) for i in range(ord('~'), ord(' ') + ~len(''), + ~len('')))

Note that the newlines and comments are only for readability.

\$\endgroup\$
2
\$\begingroup\$

Ruby - N=48

Let Ruby be Ruby and embrace the wrap-around penalty.
N=48 <- 15 (' '-'.') + 30 ('a'-'~') + 3

eval "for c in ' '..'~' do putc c end #{('i'.ord-'.'.ord).chr} for c in ' '..'~' do putc ('~'.ord+' '.ord-c.ord).chr end"

or

eval "(' '..'~').each { |c| putc c } #{('i'.ord-'.'.ord).chr} (' '..'~').each { |c| putc ('~'.ord+' '.ord-c.ord).chr }"



Old:
N=72 {straight-line scoring} <- 72 ('.'-'u') + invalid newlines

format = 67.chr
format << 42.chr
a = []
for i in 33..126 do a << i end
t = a.dup
for i in 33..126 do a << t.pop end
puts a.pack format

There's some flailing in here to avoid the 'v' in "reverse". I left it in because I'm fond of the pack("C*") hack.

\$\endgroup\$
2
\$\begingroup\$

Zsh, N = 22 + 2 + 3 = 27

print {~..!} {!..~}

Try it online!

print turns out to be the most forgiving way to output for this challenge; echo has a "c", and <<< ends up too far away too (not to mention brace expansions aren't expanded with it).

As for why I used ! instead of :

print {~.. } { ..~}      # would save a point, but doesn't work
print {~..\ } {\ ..~}    # works, but costs 13 points compared to "!"
print {~..' '} {' '..~}  # works, but costs  6 points compared to "!"
print {~.." "} {" "..~}  # works, but costs  1 point  compared to "!"

Instead, we rely on print joining the arguments with spaces to get the middle space.

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

x86_64 Machine Code, Mach-O format

N = 2, 32768 chars (too large to fit msg limit)

Edit: Pastebin is down, so you can find the full text at: http://www.ionoclast.com/random/golf.bin.txt

\$\endgroup\$
3
  • \$\begingroup\$ Is your entire code available somewhere? If not, you could post the full code externally; for example, on pastebin.com. \$\endgroup\$
    – Doorknob
    Commented Aug 9, 2014 at 23:01
  • \$\begingroup\$ The compiled executable is 33455 bits or bytes? You don't usually have an odd number of bits, and Clang and GCC won't produce such small executables without some tricks to strip the exception table. This program compiles to 8520 bytes, including the unwind table: #include <unistd.h> int main() { char const s[] = "~}|{zyxwvutsrqponmlkjihgfedcba`_^]\\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#\"! !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"; write( 1, s, sizeof s ); } Assembly should do a lot better. \$\endgroup\$ Commented Aug 10, 2014 at 1:20
  • \$\begingroup\$ Actually, it was exactly 4k == 32768 binary characters. I think I found a bug in SO's char counting code. \$\endgroup\$ Commented Aug 10, 2014 at 16:19
1
\$\begingroup\$

Ruby, N = 27

Uses $ through >.

$><<(''<<32<<33<<34<<35<<36<<37<<38<<39<<40<<41<<42<<43<<44<<45<<46<<47<<48<<49<<50<<51<<52<<53<<54<<55<<56<<57<<58<<59<<60<<61<<62<<63<<64<<65<<66<<67<<68<<69<<70<<71<<72<<73<<74<<75<<76<<77<<78<<79<<80<<81<<82<<83<<84<<85<<86<<87<<88<<89<<90<<91<<92<<93<<94<<95<<96<<97<<98<<99<<100<<101<<102<<103<<104<<105<<106<<107<<108<<109<<110<<111<<112<<113<<114<<115<<116<<117<<118<<119<<120<<121<<122<<123<<124<<125<<126<<126<<125<<124<<123<<122<<121<<120<<119<<118<<117<<116<<115<<114<<113<<112<<111<<110<<109<<108<<107<<106<<105<<104<<103<<102<<101<<100<<99<<98<<97<<96<<95<<94<<93<<92<<91<<90<<89<<88<<87<<86<<85<<84<<83<<82<<81<<80<<79<<78<<77<<76<<75<<74<<73<<72<<71<<70<<69<<68<<67<<66<<65<<64<<63<<62<<61<<60<<59<<58<<57<<56<<55<<54<<53<<52<<51<<50<<49<<48<<47<<46<<45<<44<<43<<42<<41<<40<<39<<38<<37<<36<<35<<34<<33<<32)
\$\endgroup\$
1
\$\begingroup\$

Scala, N = 69

\u0028\u0027\u0020\u0027\u0074\u006f\u0027\u007e\u0027\u0029\u002b\u002b\u0028\u0027\u007e\u0027\u0074\u006f\u0027\u0020\u0027\u0029

Uses the characters 01246789\bdefu (unicode escapes) as a fancy way of writing (' 'to'~')++('~'to' ')map print.

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

Lenguage, N=1, 1051031305378170472802141990371710130229567839916356530545925757126045319904479746110699524004618985593156618424109188625672742261101447765479880468512170844090412908982576756544352839464930752275112743890775461636401594361137373794023488860005007435006520443129620535092091787646449862714370596024435599036073543700063989003712012285691090357581157986517772 bytes

                    ...1051031305378170472802141990371710130229567839916356530545925757126045319904479746110699524004618985593156618424109188625672742261101447765479880468512170844090412908982576756544352839464930752275112743890775461636401594361137373794023488860005007435006520443129620535092091787646449862714370596024435599036073543700063989003712012285691090357581157986517732 spaces omitted...                    

This gets converted to the brainf*** program ++++[->++++++++<]>.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-. using the method described here, which outputs !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! .

\$\endgroup\$
2
  • \$\begingroup\$ How is this any improvement on this answer? \$\endgroup\$ Commented Feb 20, 2021 at 1:15
  • \$\begingroup\$ It isn't. I just thought I'd post this for fun. \$\endgroup\$
    – Makonede
    Commented Feb 20, 2021 at 1:18
0
\$\begingroup\$

Thunno J, n=25, 21 bytes

32+127:C0126+095:-CA+

Attempt This Online!

Uses + (43) to C (67)

Explanation

32           # Push 32
  +          # Add this to 0 (this is just so that we have
             # a separator between the numbers - usually
             # we use a space but that's too far away)
   127       # Push 127
      :      # Get the range between 32 and 127
       C     # Convert each to a character from a charcode
        0    # Push 0
         126 # Push 126
+            # Add them together (acts as a separator again)
 0           # Push 0
  95         # Push 95
    :        # Get the range between 0 and 95
     -       # Subtract each from 126
      C      # Convert each to a character from a charcode
       A+    # Concatenate the two lists
             # J flag joins into a single string
             # Implicit output
\$\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.