# What is the Sandbox?

This "Sandbox" is a place where Code Golf users can get feedback on prospective challenges they wish to post to the main page. This is useful because writing a clear and fully specified challenge on the first try can be difficult. There is a much better chance of your challenge being well received if you post it in the Sandbox first.

To post to the Sandbox, scroll to the bottom of this page or click on the "Add Proposal" link below, and click "Answer This Question". Click "OK" when it asks if you really want to add another answer. Write your challenge just as you would when actually posting it. You may also add some notes about specific things you would like to clarify before posting it. Other users will help you improve your challenge by rating and discussing it. When you think your challenge is ready for the public, go ahead and post it, replace the post here with a link to the challenge and delete it.

See the Sandbox FAQ for more information on how to use the Sandbox.

## Get the Sandbox Viewer to view the sandbox more easily

To add an inline tag to a proposal use shortcut link syntax with a prefix: [tag:king-of-the-hill]

• How are tags added to questions? – guest271314 Jan 9 at 7:51
• @guest271314 You can use this markup to create a tag in a draft: [tag:code-golf] – DJMcMayhem Aug 29 at 15:19
• Why no featured anymore? Can't we have it auto-added or something? – JL2210 Sep 26 at 15:57
• @JL2210 We now have a permanent info box that links to the Sandbox, so the featured tag isn't necessary – caird coinheringaahing Sep 29 at 13:43
• I think the sentence 'replace the post here with a link to the challenge and delete it' may specify that the deletion should be done immediately . – AZTECCO Oct 5 at 19:39

# nth number that multiplies k equals its reverse

Tags: ,

It's quite simple, given n and k, output the nth number such that, if the number is multiplied by k and its digits reversed, it equals the original number. Both input and output are positive numbers.

The challenge originally is from Mego, posted on my broken challenge. Firstly, I used 4 instead of k, but based on my tests, only 1 and 4 values gives output, so I decided to put 4 instead of k, finally I put k back. But the challenge would be ruin with that putting "9"*(n-1) between 2178, so no loopholes will be permitted.

I just posted here for further discussions, suggestions and improvements.

• Those numbers are positive right? – Fatalize Jul 6 '16 at 7:52
• Please add some examples of expected outputs. – Fatalize Jul 6 '16 at 7:53
• Also you might want to prevent people from hardcoding 2178 in any fashion in their code so that they have to compute the numbers, because it seems they all are of the form 21X...X78 where X...X is a series of nines (except for the first one, which is 0). – Fatalize Jul 6 '16 at 7:56
• According to the community advises, I'm not allowed to prevent people use methods those work perfectly. – Ehsaan Jul 6 '16 at 8:23
• Let's wait to see what others think. I personally don't think it's very interesting if people are allowed to hardcode the "format" of those numbers. – Fatalize Jul 6 '16 at 8:26
• Me neither, I think the challenge isn't interesting at all. – Ehsaan Jul 6 '16 at 8:43
• I think there's no good way to prevent hardcoding. Maybe making "4" were an input parameter as well would make solutions actually search for an answer? – xnor Jul 6 '16 at 9:01
• @xnor You mean make 4 as k input? – Ehsaan Jul 6 '16 at 9:33
• @Ehsaan Yes, exactly. – xnor Jul 7 '16 at 9:09
• 9 works too: 1089 * 9 = 9801. – Neil Jul 10 '16 at 17:36

Write a program that can determine the median value of a read-only (static, const, immutable) sequence of unsorted numbers (array, list, stream) but minimises storage, without completely sacrificing speed.

The basic bracket is that if we copied all the values into a sorted list and then picked the middle one (or average of the middle pair), it would require storage of the whole sequence, so the storage would be 'n', and the performance would be O(n log n).

The score is the total cost of finding the median of 1 bn values, divided by 1 bn, at a cost of 8 per value stored, 1 per comparison or numerical operation and 1 per read, for the worst case. Thus if our insertion sort costs exactly n*log2(n), the for 1 bn values the total score is 1 for the read, 29.8 for the sort + 8 for the storage, for a total of 37.8.

If instead we skimmed the whole range to get the average (costing 1 for the read and 1 for the summation), we could then only store some portion of the range to sort; but then we would need a second pass to be sure that there were an equal number of values above and below this median (at the cost of another 2).

Lowest score wins, low-level languages (C/C++/D) only so that we can count the actual operations.

• 1. It's not clear to me what counts as a "value stored" or a "read", and I think there are probably gray areas with "comparison or numerical operation" too. (E.g. in C is if (foo) a comparison?) 2. "The score is the total cost ... for the worst case." For any non-trivial algorithm, the full calculation of this score risks being longer than the code. There's a reason that complexity theorists deal with Landau notation rather than exact operation counts. – Peter Taylor Jul 7 '16 at 13:39

# Reinventing the Modularization Wheel

In a language of your choice, implement a function or language construct that imports another file of the same language and executes it, making exported values from that file available to the calling file. If one already exists, you may not use it in your implementation.

For example, in Node, you would have to implement require() without using require(), even indirectly. In C, you would implement a function or construct equivalent to #include without using #include in the implementation. In Python, you would implement import. In client-side JavaScript, I suppose the closest equivalent would be <script src="..."></script>. So JavaScript implementations would be restricted to AJAX calls only, since <script> tags would not be allowed in the implementation.

This is not to say that you aren't allowed to use the built-in import at all, but only use them in the implementation. The intention here is to reinvent the wheel.

## Requirements

• Do not include the built-in modularization in any way in your import implementation.
• Standard libraries only.
• Byte-count includes the implementation itself, and any special changes that need to exist on the file being imported, if any.
• The function or construct accepts a relative file path. As long as this is satisfied, you may extend the functionality of your modularization to have global imports, or even remote imports (like using a URL as input).
• The imported file must have a construct for denoting values that must be exported. Only these values should be directly accessible from the calling file.
• Using the built-in export function or construct of your language is acceptable, and if it is a built-in, it does not need to be included in your byte-count.
• If your language does not have modularization, then implementing a mechanic for exporting should be included in your byte-count.
• Document the usage of your function or construct.

### This is code-golf and the shortest answer in bytes wins!

• Perhaps just restrict this to languages which support modularization to avoid loopholes – Downgoat Jul 7 '16 at 18:45
• @Downgoat if people wanted to use a built-in for reading a plaintext file, and then use an eval()-like built-in to execute it in a way that exposes only denoted values (however you define that), I think it would be acceptable. What sort of loopholes do you foresee? – Patrick Roberts Jul 7 '16 at 18:49

# Print a Pilcrow Scarecrow

Print the following ascii scarecrow using the pilcrow character ¶

    ¶¶¶
¶¶¶¶¶
¶¶¶
¶¶¶  ¶
¶¶¶¶¶¶¶¶¶¶
¶¶¶
¶¶¶
¶ ¶ ¶
¶¶ ¶ ¶¶
¶
¶
¶¶¶¶¶¶¶¶¶¶¶

• Padding must be with   (space) and built with ¶
• Print to stdout
• This is

# It's time to unify!

## Introduction

Wouldn't it be awesome if they whole world would be united and there would be no conflicts and disputes? Now while you can't unify nations, you certainly can unify expressions to resolve their unknown relation and conflicts.
Your mission is simple: Unify the world (of expressions)!
And of course, because you're lazy you want to do this with the least effort (read: code-length) possible.

## Specification

### Input

Your input will be a unification problem. You can format it however you want and need, as long as you don't encode additional information to what is given in the standard / example format. Encoding the number of arguments per function into the input is allowed but not mandatory, you can also just derive this from the input.

Example format:
Your first input will be list of function symbols, which is represented as a list of pairs of strings and non-negative integers.
Your second input will be a list of equalities (you may represent each as a string), which represent the unification problem. They will be represented as a list of strings as well. Anything which is not a parenthesis or an equality sign can be considered a variable. If the number of arguments is 0, parenthesis are omitted.

Example input: [("f",1),("g",2),("h",3),("a",0)], [x=f((g(a,y)),y=h(g(f(a),z),f(z),a)]

### Output

The output is either some falsy value or something representing a list of equalities. It is allowed to use the empty list to indicate a falsy value.

### What to do?

You need to unify the inputs you got. In the end there must only be variables on the left side of the equality-signs if the you didn't encounter an error. If you did you need to report it (-> false or empty list).

To do the unification, you can - but don't have to - use Martelli and Montanari's algorithm, which goes as follows:

E is always the (complete) set of equalities except the current one
x,y,z are variables, f,g,h are functions, t1,t2, ...,tn,s1,...,sn are arbitrary terms (compositions of functions and variables)
{x=x} E => E, e.g. if you encounter two equivalent variables, discard
{f(t1,...,tn)=f(s1,...,sn)} E => {t1=s1,t2=s2,...,tn=sn} E, e.g. if you encounter the same function on both sides, unify the arguments along with your rest
{f(t1,...,tn}=g(s1,...,sn)} E => Error, if the symbols are different, you can't succeed
{x=f(t1,...,tn)} E => {x=f(t1,...,tn)} E[x -> f(t1,...,tn)], e.g. if you see a variable equals a term, replace the variable with this term in all other expressions
{x=f(t1,...,tn)} E => Error, e.g. if any of the t1,..,tn contain x at some point
{f(t1,...,tn)=x} E => {x=f(t1,...,tn)} E, e.g. if you see a variable "naked" on the right side, swap the sides


Two step-by-step examples are provided below additionally to the test cases.

### Corner Cases

You can get an empty list of function symbols, this means you have exclusively variables in the second input.
The input list of equalities will never be empty, your code does not need to handle this case.

### Who wins?

This is code-golf so the shortest answer in bytes wins!
Standard rules apply of course.

## Test-cases

All these test cases use the functions [("a",0),("b",0),("f",1),("g",1),("h",2)]

[x=b] -> [x=b]
[a=x] -> [x=a]
[a=b] -> []
[y=f(x)] -> [y=f(x)]
[x=f(x)] -> []
[f(x)=f(y)] -> [x=y]
[f(x)=g(y)] -> []
[h(x,y)=h(a,b)] -> [x=a,y=b]
[x=f(z),y=f(a),x=y] -> [x=f(a),y=f(a),z=a]
[h(x,f(y))=z,z=h(f(y),v)] -> [x=f(y),v=f(y),z=h(f(y),f(y))]


### Step-By-Step Example

Example 1: Test Case 9
[x=f(z),y=f(a),x=y] => (replace x in third equation with first x)
[x=f(z),y=f(a),f(z)=y] => (replace y in third equation)
[x=f(z),y=f(a),f(z)=f(a)] => (remove f's in third equation)
[x=f(z),y=f(a),z=a] => (replace the z in the first expression)
[x=f(a),y=f(a),z=a]

Example 2:
[f(g(a,x),g(y,b)=f(x,g(v,w)),f(x,g(v,w))=f(g(x,a),g(v,b))] => (remove f in second equation)
[f(g(a,x),g(y,b)=f(x,g(v,w)),x=g(x,a),g(v,w)=g(v,b))] => (function symbol missmatch in equation 2)
[]


# create a golfed down regexp that matches all substrings

inspired by Determine the "Luck" of a string where I found a way to golf almost 30 bytes at once
(with a falling trick for that challenge, but I still like the idea).

The word "lucky" contains 15 different substrings:

• lucky
• luck, ucky
• luc, uck, cky
• lu, uc, ck, ky
• l, u, c, k, y

Challenge
Create a program or function that, for a given string s, creates the shortest possible regexp using basic PCRE syntax that matches and returns all substrings of s and nothing else.

• code needs not to be case sensible
• basic syntax means: alternatives, quantifiers, grouping and custom character classes (e.g. [abc])
• other features (assertions, backreferences, recursion etc.) may be used, but are not required to qualify
• the result may include delimiters and modifiers

The result for lucky would be l?ucky?|l?uc?|c?ky?|l|c|y.

• is the description sufficient?
• the challenge not too easy, not too hard?
• any other hints you might have?
• I will add test cases that expose possible bugs (like silly and digdug)
• not sure yet if I will go for shortest code yet

# Write a Gopher Interpreter

This code golf challenge will task you with writing an interpreter for an esolang I created a while back called Gopher, Details on the language can be found Here

# Pass Conditions

This challenge requires you to create an Interpreter (Or you could go a step ahead and create a Compile/Transpiler) however for the code to pass as correct it must meet the following criteria

• Take in a single input being the Gopher Code
• Output the result of the Interpreted code

• Invalid code does not need to be handled, however you may do so if you wish

• As this is code-golf the smallest byte size wins

# Example Input and Output

Input:

&++<'×<&÷+<^-<<×-<#!+<$@-<&@<×-<@++<@<.!<=  Output: Hello World  • Thanks for using the Sandbox! Anyway, you should add the relevant information on Gopher to the body of this post, as if your github account/repo dies or is changed people still need to be able to answer this question. – FryAmTheEggman Jul 11 '16 at 17:15 Having had a look, it seems there isn't a challenge for "Given any date, output the day of the week". Is that a challenge worth having? Something like "Given an input date, in the form dd/mm/yyyy, output the day of the week" Shortest code wins What do we think? perhaps this already exists and I didn't find it. • Duplicate – AdmBorkBork Jul 11 '16 at 14:04 • Glad I checked! – Matt Jul 11 '16 at 14:05 # Golf your way from (inc|dec)rements to the basic math operations Write five different functions or programs that do addition, subtraction, multiplication, division and modulo with integers by only using increments, decrements, loops/recursion and comparisons. • Assume division & modulo will never receive 0 or negative integers as the divisor/modulus. • Modulo's result has the sign of its dividend. • Division truncates its quotient, e.g divide(11, 4) returns 2 and divide(-5, 3) returns -1. • Programs must print the result to STDOUT. Functions must return the result. • Your five functions/programs may invoke each other. • All functions/programs must support 32-bit signed integers, i.e everything between -231 and 231-1 (inclusive). Overflow is allowed, i.e it's OK if add(2147483647, 1) returns -2147483648. • Explicitly adding/subtracting 1 to/from numbers is allowed, in case you use a programming language that doesn't have built-ins for incrementing and decrementing. • Shortest program wins as long as it doesn't exploit standard loopholes! I seriously have no idea how to make test cases for this. • Why not one function that returns all of those? You should also specify what you mean by divisions and modulo as they differ slightly from language to language. (E.g. what is -2 mod 5? and what is -1/2?) And only doing increments/decrements, loops/recursion and compraisions is also quite vague. – flawr Jul 10 '16 at 16:37 • I don't think test cases would really be necessary since it's just basic arithmetic. You can easily tell if your output is correct or not. Also, I'm assuming that division will truncate the quotient since there isn't really any way to do decimals in this fashion, but that should probably be specified. – Business Cat Jul 11 '16 at 14:18 • I already did this because I was bored... – Mega Man Nov 19 '16 at 12:52 ## ASCII to Unicode equation beautifier You may well be used to typing equations in ASCII, but with the advent of Unicode we can spruce them up a bit. We can fix • Powers (numeric superscripts only) • Numeric subscripts • Mathematical signs (-, *, / ^ → -, ×, ÷, ↑) Examples: x^3 - 1 = (x - 1)(x^2 + x + 1) → x³ − 1 = (x − 1)(x² + x + 1) g_0 = 3^^3^^3 -= 3^(3^3) → g₀ = 3↑↑3↑↑3 = 3↑(3³) 800*600 → 800×600 1/x → 1÷x  You may assume that all digits directly after a ^ or _ are meant to be super/subscripts (and the ^ or _ to be removed) and that all the mathematical signs are to be replaced wherever they appear. This is , so the shortest solution wins. • This seems to be two questions crammed into one. The first one is the superscript and subscript transformation, which is mildly interesting; and the second one is the straight substitution of various characters for others, which is completely boring apart from the ambiguity it introduces in the interpretation of ^. I suggest ditching the substitution of minus, times, and divide symbols and giving explicit lists (with copyable characters and Unicode code points in decimal and hex) of the superscript, subscript, and up-arrow characters. – Peter Taylor Jul 14 '16 at 6:39 # Autotune a chord Auto-Tune is a pitch correction program which alters the pitch without changing the length. It can be used to fix off-pitch chords in music, which is good because I have an out of tune piano. The goal of this challenge is given some input waveform which contains a single chord played on my piano, tune each note to the nearest equally tempered note found on a standard piano (see Input for more details). # Input The input is something which looks like a time-domain audio sample input containing a single chord being played. All data is sampled at 192kHz, with 16-bit PCM (little endian integer), mono channel. The input may come from any source desired (file io, stdio, function parameter, etc.). # Output The output of your code should be something which looks like a time-domain audio sample containing the tuned chord. It does not need to have the same sample rate or datapoint format as the input, but must be the same length in real time as the original sample (or as close as possible). The output may be to any source desired (file io, stdio, function parameter, etc.). # Examples See this github repo for various inputs and outputs. The provided examples have inputs/outputs in an uncompressed wav file. Feel free to re-encode/gut the data for your inputs. # Scoring This is code golf; shortest code wins. Standard loopholes apply. You may use any libraries/builtins so long as they were not designed specifically for performing pitch correction. Main concern: This challenge seems potentially too difficult, so one alternative I've been considering is changing the piano samples into sine waves at the fundamental frequencies (avoids issues with amplitude decay/harmonics). An even simpler challenge might be to give inputs in the frequency domain (list of fundamental frequencies), though I'm not sure that would make for an interesting challenge as it seems almost too easy at that point. • It seems very difficult to determine what outputs are considered correct. – feersum Jul 14 '16 at 7:44 • yeah, that thought had crossed my mind as well. I've considered measures based on the delta of the FFT of user output/expected output, but I'm not sure this is necessarily a good measure of "in tune". – helloworld922 Jul 14 '16 at 7:47 • I suspect that the biggest technical challenge would be phase. The harmonics of each string in isolation should be in phase, because they all derive from a single hammer strike, but the keys of the chord are probably not all struck at exactly the same time, and there will be resonant driving interactions between them which will complicate the signal. I suggest that you explicitly state that people can ignore this issue. – Peter Taylor Jul 14 '16 at 13:39 This will be a challenge. Additional tags are , and . # How fast is your Stack Exchange community? tl;dr Your task is to find how fast a Stack Exchange community reacts. "How fast" is here the average of the time elapsed until the first answer or the closing of the question. Input • the Stack Exchange site's name, e.g. stackoverflow, codegolf, codereview etc. • optionally the Stack Exchange API URL: https://api.stackexchange.com/2.2/ Requirements • Calculate the average time it takes until the first answer or closing of the question. • Take the 1000 latest questions into account, e.q. ten API requests with 100 items each. Output • Output the average time in minutes and seconds, like 01:23 or 1:23. • Run your program at least against stackoverflow, codegolf and code review and show the results. • Feel free to add results for your other favorite communities as well. Boilerplate • You can write a program or a function. If it is an anonymous function, please include an example of how to invoke it. • This is so shortest answer in bytes wins. • Standard loopholes are disallowed. • Leading/trailing whitespaces/newlines are fine. • How do you count unanswered and unclosed questions? Also, I don't know about the API, but there might be problems with deleted answers. I think you should probably write a reference implementation before posting this. – FryAmTheEggman Jul 14 '16 at 13:10 • @FryAmTheEggman Thanks a lot – all good points. Didn't think that there might be questions that are unclosed and unanswered. Will check the API whether deleted even will be send. Good point with the reference implementation – maybe in JavaScript that it can be run as a stack snippet. What do you think in general about the challenge idea? Boring? Interesting? Too complicated? – insertusernamehere Jul 14 '16 at 13:15 • It's about doing basically one task, so I don't think it is complicated. I think the results are probably more interesting than the challenge (there are only so many ways to average something and to parse html), but it makes sense and isn't trivial, so I wouldn't say it's boring. Seems fine overall. Also note internet, date and, I suppose, math. – FryAmTheEggman Jul 14 '16 at 13:24 • @FryAmTheEggman Thanks again for your feedback and the tag suggestions. I also think that the results are the interesting part. I wanted to try a popularity contest in the first place because of that. But I couldn't come up with the necessary criteria. :) – insertusernamehere Jul 14 '16 at 13:30 # Convert a BMP image to grayscale The images manipulation is a great way to exercise and increase your skills. In my opinion it's also very interesting. # What you must do? The objective of exercise is much easy: convert an image bmp colorful in an image grey. You can use every language, the question most appreciated will be that don't use library. Image stock: http://www.mediafire.com/convkey/c491/p7aya9cxafvfc91zg.jpg Image converted: http://www.mediafire.com/convkey/3903/rcigd79pkwd12qczg.jpg?size_id=3 • What is the winning criterion? It is code-golf, popularity-contest, other criterion? – TuxCrafting Jul 15 '16 at 10:30 • Also, the You can use any language is unnecessary, it's implied here. And you can use ![](<image url>) to show the images. – TuxCrafting Jul 15 '16 at 10:33 • This is very underspecified at present. 1. What weights should be used in the conversion from RGB to greyscale? 2. What bit depths should be supported? 3. Is it required to support all of BMP's features (e.g. ICC colour profiles, CMYK, JPEG, PNG)? If not, what is the minimum feature set which must be supported? – Peter Taylor Jul 15 '16 at 10:53 • @Blind To mention someone, you can use @<username>, and please add the tags to your post ([tag:<tag name>]) – TuxCrafting Jul 15 '16 at 12:43 • @TùxCräftîñg , It's a code-golf. @ Peter Taylor , It's equal, you can use that weight you want. 2.see 1st. 3.just support BMP. – Blind Jul 15 '16 at 16:27 • That doesn't actually answer questions 2 or 3. – Peter Taylor Jul 15 '16 at 19:32 • Just to let you know, you can only @mention one person per comment, and it won't work with a space between the @ and the name. – trichoplax Jul 20 '16 at 16:20 # Do I have an emoji? Given an input string in your language, return truthy/falsey if the input contains an valid Unicode emoji character. ## What is an Emoji? The word emoji comes from the Japanese: 絵 (e ≅ picture) 文 (mo ≅ writing) 字 (ji ≅ character). Emojis are pictorial symbols used to represent feelings, actions, or objects. For this challenge, use the Full Emoji Data list provided by Unicode as a reference to determine which characters are valid Emojis. Sample test cases: "" -> 0 "💩" -> 1 "hello💩" -> 1 "hello" -> 0 "!±≡𩸽" -> 0 Discussion: This seems trivial, but I noticed we didn't have an emoji detection challenge. There might be a concern about the encoding of the input string, but reading the linked meta posts about Strings I feel that this challenge can use whatever String format the language used in the answer supports. The acceptable output for booleans is also up for discussion. Do we have a meta post on what output formats are acceptable for booleans? • One question: What exactly is an emoji? I think it should be specified in the challenge. – user48538 Jul 18 '16 at 16:38 • See meta.ppcg.lol/q/2190, just say truthy/falsey. – LegionMammal978 Jul 18 '16 at 16:39 • @zyabin101 can I use Unicode's emoji list as a list of valid emoji characters for this challenge? – JAL Jul 18 '16 at 16:44 • Up to you. [filler text] – user48538 Jul 18 '16 at 16:51 • I've attempted to clarify what an emoji is, at least for this challenge. Hopefully this will make this question more clear and a better fit for the site. – JAL Jul 19 '16 at 2:39 • A source which gives actual ranges would be more convenient for people writing answers, although unicode.org/Public/emoji/3.0//emoji-data.txt isn't entirely consistent with the other lists. – Peter Taylor Jul 19 '16 at 9:52 ## Trim trailing spaces in less than O(n²) time Since s/\s+$// runs in O(n²) time, Stack Overflow needs to replace it with something faster. Please write a code snippet for them. Your score will be the number of bytes in your submission, multiplied by the time taken to process a string of 1000 non-spaces with 1,000,000 leading and trailing spaces, divided by 1000 times the time taken to process a string of 1-non space with 1,000 leading and trailing spaces. (In other words, if your code runs in O(n) time then this should cancel out.)

• The fancy scoring seems like it might be confusing/hard to implement. Why not just restrict the complexity to be less than O(n²) like you suggest in the title? – FryAmTheEggman Jul 21 '16 at 13:18

## Test Cases

The test cases given below are the output for a program/function using the shortest "wrapping" version of the constants at http://esolangs.org/wiki/Brainfuck_constants.

Input
Output
Brainfuck program's output

72.>105.>33.
-[>+<-------]>-.>+[->-[<]>--]>.>>-[-[-<]>>+<]>.
Hi!

255>10++>65>255<+[-<+]->[-+[->+]-<.+[-<+]->]
->++++++++++++>>+[+[<]>>+<+]>>-<+[-<+]->[-+[->+]-<.+[-<+]->]
AAAAAAAAAAAA

>0>48-->255<[>>86.[-]+[-<+]-<-]
>>-[>+<-----]>----->-<[>>-[>+<---]>+.[-]+[-<+]-<-]
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

>,[>,]<[<]>[.>]
>,[>,]<[<]>[.>]
(cat - outputs the input)


## Scoring

Your score is your byte count plus the average length of your program/function's output for each number. For example, if a 30 byte program's output had an average length of 13.5, its score would be 30 + 13.5 = 43.5.

## Sandbox Questions

Is it tagged correctly? Should this be instead of ?

• To prevent hardcoding, add the length of the output to their score – Nathan Merrill Jul 31 '16 at 13:52
• I don't understand "the code you generate must also be as small as possible." The spec requires using the "shortest Brainfuck representation according to esolangs.org/wiki/Brainfuck_constants", so the code generated should be identical for every valid answer, surely? – Peter Taylor Aug 1 '16 at 14:21
• @PeterTaylor Oops! Forgot to remove all references to that URL. I'll fix that now. It's meant to be optional to use it, a previous version of the spec required it. – Copper Aug 1 '16 at 14:37

# Convert hexagonal coordinates to index

Your job is to, given the size of the hexagon and a pair of axial coordinates, return the index as if all the rows were laid out side by side.

Here's an example mapping for size 3:

(q,r), 3

(0,0) (1,0) (2,0)
(-1,1) (0,1) (1,1) (2,1)
(-2,2) (-1,2) (0,2) (1,2) (2,2)
(-2,3) (-1,3) (0,3) (1,3)
(-2,4) (-1,4) (0,4)

maps to

00 01 02
03 04 05 06
07 08 09 10 11
12 13 14 15
16 17 18


Here's the formula I found (could be improved):

i=index
s=size

i = q + sum( ( 2 * s - 0.5 - abs( x - s + 0.5 ) ) for x in 1..r )


Test cases (0-based indexing):

(q, r, s) -> i

(0, 0, 1)  -> 0
(0, 0, 50) -> 0
(0, 3, 3)  -> 14
(-3, 5, 4) -> 28
(5, 2, 12) -> 18


Meta notes:

• Should I include links to axial coordinates and centered hexagonal numbers?
• Or, instead, should I explain axial coordinates better?
• Should I include the formula I came up with?
• More test cases, or are those fine?
• More exposition?
• I'm also planning to do a challenge the other way around, is that ok?
• This technically isn't related to Hexagony (though, you can keep the reference if you'd like). I personally wouldn't include the formula, but that's my opinion. The reverse challenge seems like a good one as well. – Nathan Merrill Aug 3 '16 at 15:58

# Rules

• Your program must take no input and print this text.
• You can have trailing newlines, and spaces after lines.
• You must not use a builtin or load the text for an external resource.

# Score

This is , shortest answer in bytes wins.

Did you guess what was the text?

• 10/10 very creative and interesting – Leaky Nun Aug 4 '16 at 11:17
• What is special about the text and means that the answers won't use the exact same techniques as previous kolmogorov-complexity questions? – Peter Taylor Aug 4 '16 at 13:35

## Point Triangulation

(title suggestions welcome)

Triangulation has been used for hundreds of years for land mapping and cartography, until the widespread proliferation of satellite positioning systems. Essentially, if you know two fixed points, A and B, you can uniquely describe a third point C by describing the angles BAC and ABC (the angle-side-angle postulate). The challenge here will be to solve for C.

### Input

• Two rays (half-lines) of the form [(a point in x,y coordinates), (a direction in degrees or radians)] in any convenient format.
• The input angle will be relative to the Cartesian plane, i.e., an input of 0 degrees will have the ray parallel to the x axis and pointing toward x=+inf, and will follow traditional Euclidean convention that the angle increases counter-clockwise (e.g., 90 degrees is "straight up" toward y=+inf, 180 is "straight left" toward x=-inf, etc.).

### Output

• The corresponding third x,y coordinate where the rays intersect, thus forming the triangle.
• If the input will not form a triangle, you can output an error, crash, output nothing, etc., so long as your code terminates. (META - is this too harsh? Should the input be guaranteed to form a triangle?)

### Examples

[(1,0,90), (0,1,0)] -> (1,1)
[(1,0,90), (0,0,45)] -> (1,1)
[(1,0,90), (0,1,180)] -> undefined


related

• I know this is still a WIP, but this challenge has a bit of a red flag for "almost" parallel lines and floating point. When working on it you should come up with a range of inputs that won't cause too many accuracy woes. In addition, I think you need to specify that the geometry should be Euclidean, and that angles follow the convention of being measured counter-clockwise. – FryAmTheEggman Jun 7 '16 at 18:38
• Intersecting vectors is not a good phrasing, from your example I suggest intersecting half-lines (beginning in the given x-y-coordinates and going in the direction of the given angle) or something like that. At least for me it was unclear from the description that you do mean the half-lines, so I think this is worth mentioning. – flawr Jun 12 '16 at 9:19

Smallest Vigenere cypher executable

Brief

Impliment a Vigenere cypher program in your favourite language to create the smallest compiled program in any operating system.

For people unfamilar with a Vigenere cypher program, please visit the following link: https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher

Scoring

• Your score is the size in bytes of the folder that contains the main executable.

To find this, you must first compile your program. Secondly, delete any files unecessary to the running of your program. Finally, right-click on or list details by command line the folder (or equivalent standard action depending on operating system) containing the compiled executable and note the smallest of the listed size (e.g. size or size on disc in Windows) in bytes value.

• If dlls or similar are referenced, then their size in bytes must be added to the score.

• Interpreted languages may be used, but the size of a compatible interpreter (e.g. a web browser if using javascript) must be included when calculating the score.

Specific details

The program must accept 3 arguments:

• Argument 1 must be either 'e' or 'd', with e meaning encrypt and d meaning decrypt
• Argument 2 is the keyword string.
• Argument 3 is the main input string.
• If Argument 1 is 'e' then Argument 3 is the message to be encoded.
• If Argument 1 is 'd' then Argument 3 is the message to decoded.

The program must output the result only:

• If Argument 1 is 'e' then the result is the encoded string.
• If Argument 1 is 'd' then the result is the decoded string.

Rules

• The earliest dated post with the lowest score wins.
• In your answer post, post enough information so that others may repeat steps described to arrive at the same result. Presume that people reading your answer are fluent in your chosen language, but may not necesarilly understand any nifty tricks or exploits.
• You may post all your source-code if you like, but may also post only the parts that you feel are significant. There is no need to post automatically generated code, although if it is generated by a plugin then this should discussed. Failure to do so is considered cheating.
• All edits and mistakes are considered cheating. Cheat answers are identified by members of the community leaving a comment. Cheat answers must be deleted, corrected and reposted.
• The community must use the comments to report cheating only. Be careful reporting cheats as a mistake may result in a good answer being deleted.
• Improvements should be listed as a new answer post.
• Take the competition seriously and be a good sport. Avoid ribbing, jokes or childish remarks.
• Have fun
• This excludes languages that can't be compiled (such as Python and lots of esolangs), the input format seems overly cumbersome and I can't see from a first glance where you define what your score actually is (but thanks for using the sandbox) – Blue Aug 8 '16 at 9:36
• Welcome to Programming Puzzles & Code Golf! And welcome to the Sandbox... I find this a great place to learn what works and what doesn't, as often ideas I present have already been tried previously. I'll give some feedback on various points that have already been discussed by the community previously. Please feel very welcome to drop in to Code Golf Chat and talk things over with the friendly people there. – trichoplax Aug 8 '16 at 9:49
• Thank you for the advice. Interpreted or partially compiled languages may now be used and I have attempted to make the scoring system more obvious by putting it closer top the top under its own heading. – Knickerless-Noggins Aug 8 '16 at 9:49
• This appears to be a sizecoding challenge (scored based on executable size rather than source code size). There has been previous discussion on meta about this scoring method. Note that this is not off topic, but it might help to see the discussion in case it affects your decision on how to score this. – trichoplax Aug 8 '16 at 9:57
• At the moment any answer that isn't compiled has already lost due to bloat of the interpreter. C/Assemblies will probably win. Actually Java has a decent chance because there are old mobile phone OS's that can run Java bytecode natively – Blue Aug 8 '16 at 9:57
• It helps to include a brief description of the task, for the benefit of people who are not yet familiar with it, and sometimes a link to further information. For example, the Wikipedia page on Vigenere cipher. – trichoplax Aug 8 '16 at 10:01
• Is the code to be posted in an answer the compiled code or the source code that compiles to it? – trichoplax Aug 8 '16 at 10:05
• This is your challenge, so you make the rules, but just to let you know, asking for improved versions to be posted as new answers is unusual. Every post has an edit history that is viewable by everyone, which also makes it possible to see clearly when a given score was achieved (in case you were worried that an edited answer would appear to have achieved that score at the time it was first posted). It is common practice in most challenges to edit in new improvements, and people often comment to suggest improvements to each other (this community is both very competitive and very helpful...). – trichoplax Aug 8 '16 at 10:07
• Related challenge (not a duplicate - just for information) – trichoplax Aug 8 '16 at 10:30
• 1. More closely related challenge. If this question were code-golf then it's close enough that I would consider it a dupe. 2. As it stands, I would vote to close as lacking an objective winning criterion. The size of the dlls loaded by an answer vary according to a lot of factors which are outside the control of the author. If my score could change because a security update to my Linux distro changes the size of libc.so then I need to write a mini-thesis on precisely what conditions must be met to get the claimed score. – Peter Taylor Aug 8 '16 at 11:01
• What do you think to a handicap based on the language used? On one hand, I don't want to exclude people that like a particular language, but on the other hand I don't want to be unfair to people that code closer to the metal in c or assembler. – Knickerless-Noggins Aug 9 '16 at 10:47
• It is not unfair; everyone understands that lower level languages are ueually longer (with the exception of the high level languages Java and C#), but that doesn't stop people from golfing well in low level languages, and compiled executables are perfectly valid submissions. – ASCII-only Aug 12 '16 at 0:22
• I'll take that to mean that you would indeed like me to condsider a handicap, although this isn't strictly code golf. More like code crystal maze (sadly, without richard o brien or edward tudor pole as host for the time being). Well, my point is that since I want the score to based on how the system is effected as a whole, whereas code golf is much simpler. I'll get to the drawing board, and see if I can come up with a scoring system as close to simple as possible that still makes this a fun game for all. – Knickerless-Noggins Aug 12 '16 at 7:47

# N-ary Time

Decimal time is a concept of having days, hours, minutes, and seconds relate to each other by powers of 10:

N-ary time, which I made up, is having days, hours, minutes, and seconds relate to each other by powers of N.

Given an input N where minumum(2^31-1, [languages upper limit on integers])>N>1, output the value of an N-ary hour, N-ary minute and N-ary second, in seconds, using these rules: There are N^1 (10 in base-N) N-ary hours in a day, there are N^2 (100 in base-N) N-ary minutes in an N-ary hour, and there are N^2 (100 in base-N) N-ary seconds in an N-ary minute.

There are 86400 regular seconds in a day.

## Input

Input must be an integer, inputted in anyway allowed

## Output

Output consists of floats or integers that represent the amount of seconds in each N-ary unit within 0.5 seconds . Order is irrelevant.

## Test cases

input-->output

2-->[43200.0, 10800.0, 2700.0] (or some other way of representing the data)

8-->10800 3 169 (numbers don't have to have specific order)

3-->28800.3200.356 (note that this might have the same character as decimal points, but it's still clear that they are three separate numbers)

• All makes sense, but it took me a while to grasp how the output follows from the input. A worked example might help. – trichoplax Aug 10 '16 at 10:34
• Probably should have had the amount of seconds in a day yes – Destructible Lemon Aug 10 '16 at 10:57
• You could say something like "For example, when N=2, there are 2 hours in a day, 2 squared = 4 minutes in an hour, and 2 squared = 4 seconds in a minute. That makes a 2-mal hour 43,200 standard seconds, a 2-mal minute 10,800 standard seconds, and a 2-mal second 2,700 standard seconds." – trichoplax Aug 10 '16 at 11:44
• 1. Why invent n-mal when n-ary is a perfectly good word and already in wide usage? 2. IMO "Given n output 86400/n, 86400/n^3, and 86400/n^5" is too trivial to make a worthwhile question. – Peter Taylor Aug 10 '16 at 13:39
• I might think about a formula for the amount of n-ary hours that's less trivial soon – Destructible Lemon Aug 10 '16 at 23:37