# 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]

# Calculate the Delacorte Number of a square - posted

Lua Variables From Arguments?

In this question I challenge you to get variables from function arguments in Lua. The least amount of characters wins.

Basically I'm asking for you to create a function that takes an argument, and prints out the variable as a string.

Please note it has to work in a standalone Lua console.

## Number Datasheets code-golf

Write a program that accepts an integer n where 1 < n < 10000 and prints some facts about it. Each fact must be on a separate line, and in the order shown here.

• even or odd
• prime or composite
• deficient, perfect, or abundant
• square if it's a perfect square
• cube if it's a perfect third power
• fourth power if it's a perfect fourth power
• fifth power, sixth power, etc. as appropriate (each on a separate line)
• square-free if it has no factors that are perfect squares (except 1)
• triangular if it's a triangular number
• pentagonal if it's a pentagonal number
• hexagonal, heptagonal, octagonal, nonagonal, decagonal as appropriat
• 11-gonal, 12-gonal ... k-gonal. However, these should only be printed if k is less than n or if k is less than 10. In any event, each of these term is to be on a separate line.
• x totatives where x is the count of the numbers between 0 and n that are coprime to n
• lucky if it's a lucky number
• Fibonacci if it's a Fibonacci number
• Lucas if it's a Lucas number
• Leonardo if it's a Leonardo number
• repdigit in base b if it's a repdigit in base b, where 1 < b < n-1
• If it's a repdigit in multiple such bases, instead print repdigit in base b, c, d
• strictly non-palindromic if it's not a palindrome in any base b where 1 < b < n-1

Any feedback would be appreciated.

Math golf

This challenge is about writing code that outputs the smallest formula possible for a sequence of position integers.

Input

I will choose 10 from the following test sequences of positive integers. However, please do not hardcode these into your answers. If I suspect this has happened, I reserve the right to change the test sequences without notice.

Your code should accept standard in with one list of comma separated sequences per line.

1, 2, 7

12, 9, 7, 5

40, 25, 16, 10, 7

2240, 1225, 679, 373, 213, 149, 141, 133

8064, 3969, 1969, 974, 494, 254, 164, 134, 119

118272, 53361, 24196, 10958, 5027, 2399, 1271, 863, 746, 695, 668, 665

1, 4, 36, 400, 4900

96, 1280, 17920, 258048, 3784704, 56229888, 843448320

72, 800, 9800, 127008, 1707552, 23557248, 331273800

40, 224, 1064, 3808, 21280, 59200, 322600

2240, 832, 240, 72, 20, 6, 3

53760, 17152, 4480, 1248, 384, 104, 44, 22, 11

329472, 86656, 20800, 5536, 1536, 440, 124, 44, 19, 8, 4

32800768, 6856704, 1536000, 394752, 103936, 27136, 7936, 2080, 656, 264, 132, 66, 33

206389248, 33216512, 7029760, 1743360, 448000, 112640, 30144, 8288, 2096, 688, 284, 102, 46, 18, 9

20956446720, 2527756288, 510181376, 122363904, 30720000, 7643136, 1972224, 508416, 136192, 35456, 10816, 3296, 1360, 632, 292, 146, 73

Output

A math formula per input line which maps an index n starting at 1 to the relevant value.

A formula can be made up as follows. It can consist of the sequence variable n, integer constants, *, /, -, +, !, (, ), ^ or (m,k). These are to be interpreted in their normal mathematical sense with (m,k) to be read as binomial(m,k). The formula has to be well formed with, for example, parentheses matching and the order of precedence of operators will be the usual mathematical ordering.

A special rule applies to the factorial function ! which requires parentheses if the ^ or ! operators are to be applied to the result of the factorial. I.e. it is (n!)^2 and not n!^2. Note that the !! is never allowed. Unary - also requires brackets if any further operator is applied to the result on the left hand side or if the result is to be raised to a power. For example it is n*(-1) and not n*-1.

Score

I will test your code on a number of sequences of integers that I make.

The score is the sum of the number of characters in all your outputs.

Example output

For the sequence that starts 96, 1280 above, the output 4^(n+1)*(2*(n+1))!/((n+1)!)^2 gives a score of 29.

# Generalized Array Indexing

Most programming languages provide an array datatype (which might be called a list or a vector) that supports indexing. Given an array and a nonnegative integer, we can fetch the element of the array at that position: [a,b,c][0] = a. Some languages, like Python, support a more general indexing system, where passing a negative index counts the position from the end: [a,b,c][-1] = c. But why stop there?

In this challenge, your task is to provide another generalization of this operation. In other words, you must provide a function that takes in an array and a number, and returns something, up to the following restrictions:

1. If a nonnegative integer is passed to the function, it must return the element of the array at that position. In other words, it must be an extension of the array indexing operation.
2. It must support more indices than just nonnegative integers, like negative integers, fractions, complex numbers, or even strings. In other words, it must be a proper extension.

If necessary, you may restrict the types of elements your arrays may contain, so you may choose to only handle arrays of, say, floating-point numbers, or other arrays. This is a popularity contest, so the answer with the most upvotes wins.

# Play Chopsticks

Disclaimer: Please fix the question and the scoring if they are not satisfactory. I am probably not qualified to run and score entries because I am not entirely familiar with the logistics of running two programs against one another, and, as such, I will not be posting this question to the main page myself. So, if anyone wants to take this off my hands, feel free. I just really like this idea and want to see it happen.

Chopsticks Wikipedia article

Your challenge is to write a program that, given the current position of the game as input (how many fingers on each hand), outputs the next move it chose to take.

## Rules of the game

(Normal rules, no variations)

1. When a hand's finger-count becomes >= 5, it's finger-count becomes 0.
2. Splitting/transferring is allowed. You CAN bring a dead hand back by transferring some fingers from your other hand.
3. However, splitting/transferring is not allowed if the move only results in you having swapped your hands. (eg. no prolonging the game by "doing nothing")
4. A player loses if both their hands are dead.

## Input

You will receive as input the number of fingers on each of your and your opponents hands.

Input will be given in the following format:

#_on_your_LH #_on_your_RH #_on_opponent_LH #_on_opponent_RH


Examples:

1 1 1 1


or

4 0 3 2


## Output

Your program will output your move base on the input.

Key:

First number:
0 (your LH)
1 (your RH)
2 (transfer from your LH to your RH)
3 (transfer from your RH to your LH)

Second number:
If first number was 0 or 1:
0 (opponent's LH)
1 (opponent's RH)
If first number was 2 or 3:
1-3 (# of fingers to transfer)


Examples:

0 0 (tap opponent's RH with your LH)
0 1 (tap opponent's LH with your LH)
1 0 (tap opponent's RH with your RH)
1 1 (tap opponent's LH with your RH)
2 1 (transfer 1 finger from your LH to your RH)
3 2 (transfer 2 fingers from your RH to your LH)


## Scoring

Each entry will be made to play a game against every other entry.
If a game does not end after 100 rounds (?), it will be declared a tie.

Two points will be awarded for every win and one point will be awarded for every tie.
Entry with the most points is the king of the chopstick-hill.

# N-gon Naming

## Challenge

Given the word name of a polygon n, you must output the number of sides polygon n.

## Examples

Input:  triangle
Output: 3

Input:  dodecagon
Output: 12

Input:  megagon
Output: 1000000

Input:  hexahexagon
Output: 66


## Winning

The shortest code wins.

The list of shape names can be found here with instructions on how shape names are constructed. Use the alkane naming system.

# Help Bob the Builder survive the communists, and fast!

The communists have taken over the world and you are the last remaining tower builder. In order to surive you must show that you are able to build towers and fast!

## The challenge

Bob is given a set of building blocks b, and a number n of towers to build. Since we are in communist land the towers should have as equal of an height as possible. The catch is that you are only given 180 seconds to build the towers. The goal is to minimize the std of the tower height. In addition you have to build towers at three different sites. Which means three different sets of building blocks and three different set of towers.

## Input & Output

blocks = [1,2,3,4,5,6,7,8,9]
towers = 3


The ouput should be on the form

7 6 2
8 5 4
1 9 5

std = 0


Here the towers are built vertically. The std is calculated as follows

std = sqrt[(mean - tower1)^2 + (mean - tower2)^2 + ...]


where tower1 represents the height of that tower and mean is the average of the heights.

mean = (tower1 + tower2 + ... + towern)/towers


# Example 2

Input

blocks = [1,2,3,4,5,6,7,8,9]
towers = 2


Output

5 3 2 4 1
9 6 7 9 0

std = 0.7071


Since mean = (23+22)/2 = 22.5 and std = [(22.5-23)^2+(22-23)^2]^(1/2) = [1/4+1/4]^(1/2) = (1/2)^1/2.

These two are examples of optimal outputs. Since the problem is NP hard an optimal solution within a reasonable time is impossible.

# Scoring

The blocks for the three building sizes are given below. The sum of these three tests judge your performance. Lowest score wins. Eg

 score = 100*std(1) + 50*std(2) + std(3)


Where std stands for the standard deviation obtained at building site n. Do not try to cheat and make a code that runs longer than 300 seconds. The KGB (Eg me) performs regurarly controls.

# Question for meta

1) Is the problem clear enough? Eg use the three vectors and distribute them equally

2) Is the scoring now fair? Must have a run time beneath 3 minutes, lowest score wins.

Building site 1: 2 towers

Building site 2: 3 towers

Building site 3: 23 towers

# Quine is love, quine is life (well, almost)

Yes, another Life challenge. Inspired by this.

# Challenge

Write a program (the generator) that, when given a representation of a Game of Life board on STDIN (or in a file if you like), outputs a program which contains a string representation of a Game of Life board in its source code.

The representation will be in the following format:

 h w x1 y1 x2 y2 x3 y3 . . . xw yh


where:

• h = height of the grid
• w = width of the grid
• xi yi = coordinates of a live cell

When run, the new program should output its own source code - with a catch: the string in the output must represent the generation following the one previously encoded. (We shall call this program the replicator.)

# Other stuff

• All live cells will be provided as input, so all other cells may be assumed to be dead.

• 0,0 is at the bottom left.

• Both programs (the generator and the replicator) need not be in the same language.

• There may be a width-one border around the string representation for a -10% bonus in score.

# Scoring

Your score on a particular input will be defined as the length of the generator plus the average length of the first 100 generations of the replicator.

Your final score will be the average of your scores on all the test cases. The lowest score wins!

# Question

Should we impose a format for the string representation, like maybe

* * * * * * * * * * * * * * * * * * *
*                                   *
*                                   *
*                 *                 *
*               *                   *
*               * * *               *
*                                   *
*                                   *
*                                   *
* * * * * * * * * * * * * * * * * * *


or should we let the GolfScripters and CJammers of PPCG use their unprintable black magic? :D

## Query the icosahedral graph

You've been sent back in time to 1973 to change history by remaking a clone of Hunt the Wumpus. You need to code a network of rooms in the game that forms an icosahedral graph, whose vertices correspond to the 12 vertices of the icosahedron connected by edges, unlike the dodecahedral graph used in the original game. Each room connects to five others.

Your goal is to write a program or function that takes the ID numbers of two of the twelve rooms, and returns one value if the rooms are adjacent, and a different value if not. Due to space constraints, you code needs to use as few bytes as possible.

You can choose what ID's to label the 12 rooms, but due to hardware constraints, they must be numbers from 0 to 255. Specifying the ID's doesn't count for the code length.

Input

Two distinct ID numbers from 0 to 255 out of 20 of your choice. You can't restrict which order two numbers appear in.

Output

A consistent value for pairs of numbers that correspond to adjacent rooms in your ID scheme, and a different consistent value for non-adjacent pairs.

Your code may not use any built-ins that represent the dodecahdral graph or related structures.

# Reverse Polish Notation-ing!

Your challenge is simply to write a function which converts a given arithmetical expression into it's Reverse Polish Notation form.

## Input

Your function will be passed in an arithmetical expression, as a string, which may contain any of +-*/^() or a space. For example:

1+1 34 * 7^6 3 * (78 + 7)

## Output

Your function should return the Reverse Polish Notation form of the input with a space between each number. The above inputs would output:

1 1 + 7 6 ^ 34 * 78 7 + 3 *

## Scoring:

This is so shortest code wins. Bonuses are as follows:

• -15 for supporting brackets in the input (as in: ())
• -5 for supporting exponents (as in: ^)
• -10 for supporting floating point (decimal) numbers (formatted with a dot: 12.56)

You should support, at minimum, +, -, * and / operations.

Good luck!

To the sandbox:

• Should I give more examples or is 3 enough?
• Do you think the deductions are a fair amount off? Too much? Too little?
• Am I missing something really obvious? (I usually am!)

Print the Twelve Days of Christmas with twelve programming languages

Use twelve programming or scripting languages to write twelve programs, embedded within each other, to print the lyrics for Twelve Days of Christmas.

Each program will write the next program to file, compile if needed, and execute it. The parent processes will not exit until the last has executed. When they exit, they will print the final verse, program by program. You may only have one file to start with. You may also, optionally, have a text file with each line of the song in it.

You must specifiy any dependencies needed to run the programs. For example, if you need a compiler, such as GCC, or PHP or the Java compiler/Java, put them in a list of dependencies.

For example:

<?php
echo "On the first day of Christmas, my true love gave to me:\nA partridge in a pear tree!\n";
$code = <<<EOD public static void main(String [ ] args) { String nextCode = new String; System.out.println("On the second day of Christmas, my true love sent to me:"); System.out.print("Two Turtle Doves\nand a Partridge in a Pear Tree\n"); nextCode = "(Next code to be written is in here)"; PrintWriter writer = new PrintWriter("thirdDay.c", "UTF-8"); /* * and write the next program, in this case, thirdDay.c to file and so on.... */ } EOD; file_put_contents("secondDay.java",$code);
exec("javac secondDay.java");
echo exec("java secondDay");
echo "and a Partridge in a pear tree"; // runs after the other twelve have run
?>


Apologies for my rusty Java.

To reiterate:

1. The program is started
2. The program prints the appropriate verse
3. The program writes the source code for the next program to file, which in turn contains the code for the rest, and so on.
4. The program compiles (if needed) the next program, and runs it.

The final program will only print the line for Day 12. It will then exit, returning to its parent program, which will print the second line - Day 11, exit, and so on. In my example, this line will run last:

echo "and a Partridge in a pear tree"; // runs after the other twelve have run


Have fun with those quote marks. I started with PHP and Heredoc for a reason ;)

Assume that this will be run in a Linux/Unix terminal. Windows is okay if you can pull it off.

This is a popularity contest. Assuming that you can get everything escaped properly ;)

Merry Christmas!

# A natural divisor

Expressiveness, natural language elements and readability, these are just a few of the awesome features/ideologies modern high-level languages promise us. But how "readable" and "natural" are these languages really? Can you really read them as they were english? In this challenge you have to prove how (un)natural your preferred language really is.

## Challenge

You're to write a program that accepts a list/string of numbers from the STDIN, and outputs their greatest common divisor to the STDOUT. However you also need to write a complete description of your program, an english explanation of your entire program. The challenge is to make your program resemble the description as much as possible. As in a perfect natural programming language there would be no difference, your score will be the Levenshtein distance between your program and your description.

## Rules

• Your description can only contain correct english sentences. The sentences must be at least six words long.
• The description must contain the full and correct process of your program. Nothing more or less. An example can be found below. As a general rule: a programmer that doesn't understand your language should completely understand your description and should be able to recreate the exact algorithm.
• Your program cannot contain both comments or strings.
• Your program should use the universal accepted definition to calculate the greatest common divisor. If the input only contains 0's, you have to output 0.

## Example

This is a fibonacci function to illustrate how a description should look like:

PROGRAM:
def F(n):
if n == 0: return 0
elif n == 1: return 1
else: return F(n-1)+F(n-2)

DESCRIPTION:
Define a function F with input n. If n equals 0, return 0.
Else, if n equals 1, return 1.
Else, return the output of F with input n minus 1,
plus the output of F with input n minus 2.


## Score

As mentioned earlier, your score is the levenshtein distance between your description and your program. You can calculate your levenshtein distance with the following snippet (thanks doorknob):

var f=document.getElementById("f"),g=document.getElementById("s"); function h(){var a=f.value,e=g.value;if(128<a.length)a="<span style='color:red'>First program is too long!</span>";else if(128<e.length)a="<span style='color:red'>Second program is too long!</span>";else{if(0===a.length)a=e.length;else if(0===e.length)a=a.length;else{var d=[],b;for(b=0;b<=e.length;b++)d[b]=[b];var c;for(c=0;c<=a.length;c++)d[0][c]=c;for(b=1;b<=e.length;b++)for(c=1;c<=a.length;c++)d[b][c]=e.charAt(b-1)===a.charAt(c-1)?d[b-1][c-1]:Math.min(d[b-1][c-1]+1,Math.min(d[b][c-1]+1,d[b-1][c]+ 1));a=d[e.length][a.length]}a="Distance = <strong>"+a+"</strong>"}document.getElementById("d").innerHTML=a}f.onkeyup=h;g.onkeyup=h;
<h3 id=ft>program</h3>
<textarea id=f rows=7 cols=80 style="width:100%"></textarea>
<h3 id=st>description</h3>
<textarea id=s rows=7 cols=80 style="width:100%"></textarea>
<p id=d></p>

# Sandbox questions/notes:

• The question was just crazy idea for the most part. Do you think this question would work?
• Are there any languages that would get an unfair advantage? Are there more things I should ban?
• I know the description of the program description is somewhat subjective, so the answers would mostly involve being creative with their description. Are their any additional rules that could restrain this?

# Final Exam Grade Calculator

So, it's around time for finals, and many students want to know what grade they need on their final exam to achieve an A, B, or sometimes a passing grade. There are many factors here - the weight of the final, two quarters having weight, what grade the students want - but it is still a simple task.

## Objective

Write a program that will take three integers and output the grade they need to receive on the final.

### Input

Three integers. The first two will be from 0 to 100, and the last will be from 1 to 100. They represent the current score in the class, the desired score, and the weight of the final, respectively. A working example can be found here.

Any input outside the expected ranges can have undefined behavior.

### Output

The score the student needs to receive on the final exam. This score could be above 100 (every once in a while, students have unrealistic expectations), but if it is a negative number, it is automatically 0. The formula for score is as follows.

(desired - (current score * (1 - weight*.01))) * 100/weight

The output may not be an integer. In this case, round to the nearest hundredth (round up for .##5).

### Examples

Input: 100 90 20
50


Input: 65 60 30
48.33


Input: 54 100 25
238


### Scoring

This is a challenge, so the shortest code wins.

Bonuses

• -10% if your code can take either 3 or 4 integers as input. If four integers are taken, then the first two are averaged to give what would normally be the first integer. Each of the first two integers here represents a quarter grade.

What other bonuses should I add? I can't think of many right now, but even one or two more would be helpful.

# Possible resistances from resistors

Meta: Note this is far from done; just putting this idea out so that I can continue working on it. IE way work in progress. I need to specify a lot more of this and I'm putting this here because I know I won't end up working on this if it isn't here.

Given a set of resistors, output all the possible resistances that can be formed with them.

Thoughts so far:

# Input:

Input will be a comma-separated or space-separated list of natural numbers such as

1 4 3 2 4 3 5 999


# Output:

Output will be all the possible formable resistances, sorted, on its own lines, plus the number of ways to form each resistance.

(no example yet)

# Implement the Henkin quantifier

Your goal is to implement the Henkin quantifier Q_H, a generalized (branching) quantifier on four variables x1,x2,y1,y2 and a Boolean function f. It expresses the idea that for every choice of the x's, there's a choice of the y's so that the four variables satisfy f, so that each y depends only on the corresponding x and not the other one.

The parallelness of the choice of is sometimes represented by stacking the paired quantifiers like this:

This quantfier cannot be expressed in first-order logic.

The parallel choices for the y's are like prisoners being interrogated in separated rooms. They are each asked the respective questions x1 or x2 and must give respective answers y1 and y2 without knowing what the other one was asked, so they are liable to be trapped in inconsistent claims. The guards then evaluate the validity of their responses ointly by some function f that depends on both questions and answers. If the prisoners can always win this game, then f satisfied the Henkin quantifer Q_H.

Formally, the Henkin quantifier Q_H takes in a Boolean function f of four inputs (x1,x2,y1,y2), and evaluates whether the following statement is True:

For every x1 there exists a y1, and for every x2 there exists a y2, so that f(x1,x2,y1,y2) is True, and the choice of y1 depends only on x1 and the choice of y2 depends only on x2.

Alternatively stated in Skolem normal form

There exists functions g1 and g2 so that for every x1 and x2, the function f(x1,x2,g1(x1),g2(x2)) is True.

For this challenge, the domain of discourse will be natural numbers from 0 to 9.

Input:

A function f that takes in four numbers x1,x2,y1,y2, each between 0 and 9 and produces a Boolean output.

Output:

A consistent Truthy value if f satisfies the Henkin quantifier Q_H, and a Falsey value if it does not.

Questions for Sandbox:

1. Does this challenge make any sense?

2. What should the input format be? Not every language can take in functions. What about nested lists? Subsets of four-digit numbers?

# Solve a LaserTank level (optimally?) [WIP]

LazerTank is more than just a computer game, it is a blast from the past. In this game, the player controls a tank that shoots lasers and navigates through a series of puzzles. The goal of this challenge is to write a program that solve game levels.

TODO: Actually explain how LaserTank works. There is an instructions page on the website.

Input will be an ASCII representation of the game map. TODO: determine which characters stand for what stuff.

Output will be the list of actions required. There are four possible actions for each step in the solution, "move forward," "turn left," "turn right," and "shoot".

Counting k-mers

The task is to count the number of distinct substrings of length k, for k = 1,2,3,4,.....

score

Your score is the highest k you can get to on my computer in under 1 minute.

You should use http://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/chr2.fa.gz as your input and ignore new lines.

You should ignore all newlines. You can preprocess the input to decompress it before starting.

The following code outputs a histogram of all the 4-mers. You can then count how many there are with wc.

awk -v substr_length=4 '(len=length($0))>=substr_length{for (i=1; (i-substr_length)<len; i++) substrs[substr($0,i,substr_length)]++}; END{for (i in substrs) print substrs[i], i}' file.txt


(This question is not finished yet.)

# Elevator Control [WIP]

The controller is still a WIP, but I have a decent idea of how it'll work.

You have been hired as a Vertical Integration Specialist (programmer) at Ascension Incorporated to write advanced elevator controller software. (backstory wip)

# Elevators are Cool

The current setup is that there will be ten floors and three elevators. This is 100% subject to change. I'm not exactly sure how the game will be judged, below is an idea.

As people begin queue up, your elevators will be responsible for making sure that they get where they want to go. Each game tick, there is a certain % chance that a person will queue up at a given floor with a random destination. You goal is to transport 1000 people in the least time possible.

# Details

Your submission will be the the form of a Java class. This class must contain at least two methods: the constructor mySubmission(Elevator[] elevators, Floor[] floors) and update(Elevator[] elevators, Floor[] floors). The constructor class will be called once, and update after every game tick.

## Elevator Class:

• int location gives the current floor location of the elevator. (Read-only)
• int dest gives the destination of the elevator. All elevators have a destination, even an idle elevator, in which case the destination is the current floor. (readOnly)
• String status is idle or busy. Elevators which are idle are not moving and have no floors in queue. (read-only)
• boolean[] buttons tells which buttons have been pushed, signifying that a person in the elevator wants to go to that floor.
• ArrayList<Integer> destQueue gives the list of destinations for this elevator. An idle elevator with something in destQueue will become busy and have a new destination. (writable)
• goToFloor(int i) adds that floor to the queue if it is not already in it.
• clearQueue() clears the queue. Simple as that.

## Floor Class

• boolean waiting means that somebody is at that floor.
• boolean up means that somebody on that floor wants to go up.
• boolean down means that somebody on that floor wants to do down.

# Every number is interesting

We know that every number is interesting but how?

You should write a program or function which:

• takes a list of N positive integers (>0 and <2^31)
• outputs N lines each of them showing how the corresponding input number is interesting
• is not longer than 1024 bytes
• uses no more than 1 second per number
• doesn't use external sources

## Examples

172: 444 in base6
5776: 76*76
9801: 9 * 1089 (reverse)
68101: no 11 in base2 (10000101000000101)
491033: 317 * 1549 (product of 2 big primes)
467808816: no digit 5 from base6 to base10


## Inputs

You should include the output for the following input in your post:

58 92 120 224 358 490 912 1578 7812 222008 1645060 19796411 550453633


If you care to run your program on a bigger sample and share the result with us use this input data (2500 numbers). (You can upload your output to e.g. pastebin.)

This is a popularity-contest so highest voted answer wins.

Tags: popularity-contest, number

# Random distribution in array with exact number of occurences and max size

Write a program or a function, that takes 3 inputs x y z, where :

x is an integer representing the max size of each output array.
y is an integer representing the exact number of occurence of each z value.
z is a set of n integers to distribute

and outputs a set of arrays containing z values randomly distributed (each array must be unique, different ordered array are not the same).

# Rules

• Each value of z can only appear once in each output array
• x value is between 2 and 10
• y value is between 1 and 10
• n is between 2 and 50
• z's n values are between 0 and 50
• If and only if n * y isn't divisible by x you can output one array with less than x elements
• "Random" means that every possible output must be produced with finite probability (barring the finite length of the PRNG's cycle)
• You can assume valid inputs, and there will always be at least 1 possible solution

# Example

Input :

4 5 [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]


Output :

[[3 18 16 10][9 0 2 11][6 12 0 9][15 16 10 4][4 17 16 14][14 3 15 2][5 4 7 16][17 5 0 13][13 11 7 6][2 9 8 12][5 13 7 2][7 1 8 14][11 19 17 0][17 19 6 13][3 1 5 15][15 18 0 7][19 14 18 10][1 16 10 9][1 12 14 10][9 15 4 12][8 4 3 5][19 11 18 3][13 12 17 11][6 1 8 19][18 8 2 6]]


Input

4 5 [0 1 2 3 4]


Output

[[0 3 2 1][0 3 2 4][3 2 1 4][2 0 1 3][1 0 3 4][4 2 0 1][4]]


# Winning Criterion

This is code-golf so the shortest answer wins.

# Note

This is actually based on SO question that I asked, and you can find a Java implementation here : https://stackoverflow.com/questions/28544808/random-distribution-of-items-in-list-with-exact-number-of-occurences

# Sandbox

Definition of random : Should I accept output that contain same "subset" array ordered differently? Output format : How can I better define the output expected?

# Can you reach this chess position?

This is currently a stub. If it makes sense I will write it out.

You should write a program which given a chess position outputs a list of moves (white and black alternating) with which the given position can be reached from the standard starting position. Your goal is to minimize the number of moves.

## Input details:

will be in following the format (but of course not the staring position):

rnbqkbnr
pppppppp
........
........
........
........
PPPPPPPP
RNBQKBNR

• Inputs will be chosen from random positions of random low-level games (~1200 Elo).
• You only have to reach the given position with legal moves. You don't have to care if any castling or en-passant was available in the input.
• You can choose whose turn it is.

## Output details:

• Is a list of [a-f][1-8] [a-f][1-8][qrbn]? ([qrbn]? is for promotion, if there is a standard notation for it, that will be used).

## Other details:

• Running time of your program should not take more than one minute on your computer.
• Program shouldn't be longer than 50Kb. (this is against hardcoding databases thought that might wouldn't help that much)
• Standard loopholes are disallowed.

## Scoring:

• Sum of the moves (half-moves) for the 20 provided inputs. If hardcoding happens those are subject to change. If a program can't reach a given input in 1 minute it's score is 300 for that testcase.

Sandbox notes:

A validator would be useful. I can't do a JS snippet but maybe I can hack together a python3 one.

(You don't have to implement castling, en-passant, promotion if you don't want to and still can get a great entry.)

# Find the Point of Maximum Light

Inspired by this program, this challenge is about finding the point where the mouse should be placed, given an input in a form which will be specified later, in order to color the most pixels yellow.

The above link will bring you to a program with a hexagon, a triangle, and a line. When the mouse is moved over the shapes, light rays shine from the mouse and the various shapes absorb the light.

Input is given in this format: [250,200,150,100 250,200,300,120 150,100,300,120] [250,350,350,250] (Compare to the lines array in the aforementioned program). Your program is to assume the perimeter ([0,0,400,0 0,0,0,400 400,0,400,400 0,400,400,400]) is always present.

This is code-golf, so the shortest code wins.

NOTE: please tell me if I can clarify my question.

## Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo

I'm not sure how or if this can even work in any language, but I figured I'd toss the idea up here for someone else to flesh out in case it's actually viable.

"Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo" is a grammatically correct American English sentence. This is possible because there are three different meanings of the word "buffalo" (or "Buffalo") used in the sentence, and some other words and punctuation are implied rather than explicitly included.

I think this would be a great code challenge to issue, if it is at all possible. It may not be proper for , but that would put an interesting spin on it as well.

The objective would be to create a script or program which is made up only of a single command, or sequence of commands, which is identically repeated throughout the source. No other code is permitted to fill or wrap the repeated piece. Within the script or program, those commands must do something in at least three different ways (or do three totally different somethings) despite being written exactly the same (perhaps with some allowance for deviations in capitalization, such as in the actual sentence) for every iteration.

A fictitious (and obviously invalid) PowerShell example is below.

Code:

echo 'buffalo';echo 'buffalo';echo 'buffalo';


Output

buffalo
Buffalo
BUFFALO

(Note: The Output could be easily achieved by simply modifying the capitalization of "buffalo" within the script, but that would be in violation of the spirit of the challenge - such deviations, if permitted at all, should not be allowed in string literals.)

# Regex vs HTML

As the Stack Overflowers have been defeated, it is up to the Programming Puzzlers and Code Golfers to fight this final battle against the regex-resisting HTML-hordes. Pick up your flavour of choice and join the melee, with the shortest regex you can achieve (no, not like this)!

## Challenge

Write a regex which takes a html tag, and splits it into tag name, attributes and body. For example, <img src="something.jpg">caption</img> is converted to img, src="something.jpg" and caption. Your regex will be run by the controller against a list of tests. Any regex flavour can be used, as long as there is a driver available (or you want to write your own).

## Rules

• The regex should contain at least 4 groups, one each for tag name, tag attributes, tag body (contents) and a group for the html tag matched, which may be group 0 (which will not add to your regex length).
• Your regex does not need to handle all the test cases, but the more handled, the higher your score.
• The scoring formula is (100 - log(self.length) * 40) * ((passes - total) / total + 1), but this will be handled by the scoring program. This formula might change, based on how the challenge progresses. A higher score is better.
• For your regex, you must specify the driver you use (the name in square brackets), any flags and the group names or numbers that hold the split bits. Flags do not contribute towards regex length.

## Testing

• Your program will be run over 30 tests (more may be added) by the scoring program, and the number of passes counted.
• Length is in bytes.
• Your score then is (100 - log(length) * 40) * ((passes - total) / total + 1), but this will be handled by the scoring program. This formula might change, based on how the challenge progresses.
• Types of html that you can score points on (remember not all need to be handled):

• Paired html tags - <a>b</a>
• Tags with the self-closing syntax - <br/>
• Quoted attributes (using either single or double quotes) - <a href='mysite.com'>b</a>
• Unquoted attributes - <b strength=1>msg</b>
• Empty or boolean attributes - <input disabled/>
• Comments (tag name is !--, attrs is empty, body is the text of the comment) - <!-- Something important -->
• DOCTYPE sections (tag name is !DOCTYPE, body is the following text) - <!DOCTYPE html>
• CDATA sections (tags inside ignored) - <![CDATA[<br/>]]>
• Example tests (one on each line, full list of tests and answers):

<a>b</a>
<a href='mysite.com'>b</a>
<a href='mysite.com' color="blue" height=1>b</a>
<quote href="http://somewhere.com">"he said this"</quote>
<div class="quote">The answer is <div id='the-answer'>42</div></div>
f'g(<b>x</b>)g'(<b>y</b>)
<input text='Your name:' focused/>

• Answers to examples (one on each line):

Name   Attrs                                    Body                                         Matched
=================================================================================================================================================================
a                                               b                                            <a>b</a>
a      href='mysite.com'                        b                                            <a href='mysite.com'>b</a>
a      href='mysite.com' color="blue" height=1  b                                            <a href='mysite.com' color="blue" height=1>b</a>
quote  href="http://somewhere.com"              "he said this"                               <quote href="http://somewhere.com">"he said this"</quote>
div    class="quote"                            The answer is <div id='the-answer'>42</div>  <div class="quote">The answer is <div id='the-answer'>42</div></div>
b                                               x                                            <b>x</b>
input  text='Your name:' focused                                                             <input text='Your name:' focused/>

• There is a timeout for the regex matching (currently 5 seconds, but this may change depending on the number of submissions), so if you are making a bit / computationally expensive regex, use a fast driver. The tests will be run on a 2013 MacBook Air, most likely single threaded (although 4 cores are available).

## Drivers

Contributions of drivers is much appreciated. See the instructions on github.com.

## Results

Name                          Length    Score     Passes    Fails     Timeouts  Errors
==========================================================================================
Naive                         68        10.6799   12        18        0         0


## Sandbox Questions

• Is the scoring formula fair?
• Is this too easy / hard?
• Would abstracting the controller a bit more allow the controller and drivers be useful for scoring other challenges? Would anybody want to use it?
• There is currently a python and a perl driver. Are there any other major regex flavours that should be supported, or should I wait and see until after the sandbox?
• Is there any parts of the challenge that are a bit clunky and need rewriting?
• Could someone add this to the listing at the top?
• Anything I've missed?

## Make a Space Heater

I've been out shoveling snow all day, and my hands are freezing! Heat them up with my computer.

Here's an (ungolfed) Linux C solution:

#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/prctl.h>
#include <sys/wait.h>
#include <sys/sysinfo.h>

int main() {
int cpu_cores = get_nprocs_conf();

for (int i = 0; i < cpu_cores; i++) {
if (fork() == 0) {
nice(19);
while (true);
}
}
while (wait(NULL) > 0);
return 0;
}


Additional Rules:

1. It must use all my CPU cores! More cores means more heat. (Processes are not required. You can use threads, or whatever. Just keep my cores pegged.)
2. Don't slow down my system. I might want to watch cat videos while my hands are warming. (The example does this with nice)
3. Shortest answer in bytes wins.

# Navigate My Time Machine

This is a pretty broad idea, but time travel is a lot cooler than space travel. The basic idea is that the program will have to sort out the path of various objects through time, given certain constraints as to what must be where, when.

There are a few different models of time machine that could be used, based upon which type of time travel we want to use.

One possible example is the time travel model used in the film Primer. Notably, the machine must be turned on before it can be used. I find this model to be fairly "realistic," if that term can be used in regards to time travel.

There would also be the requirement of conservation of mass. If there there are multiple copies of an object, then "the number of forward-moving copies" - "the number of backwards-moving copies" = 1. The most important point is that there is a single "unified" timeline.

One idea is to create a long list of various objects, listing the known sightings of each one. From this list of information, the program must sort out the path of each object through time, ensuring that each duplicate object is accounted for and that conservation of mass is obeyed.

Additional ideas include determining how much additional aging each object has experienced as a result of the time travel.

# Design Logic Circuits with CSWAP Gates

A universal logic gate is a logic gate is one that is capable of creating any other logic gate or circuit. For example, it is possible to wire together dozens of NAND gates to form any logic circuit you so desire.

Beyond a universal gate, a reversible logic gate is one whose (multiple) outputs can be used to determine the input. One notable reversible universal gate is the Fredkin Gate, also known as the CSWAP gate. This gate has three inputs and three outputs, yet is very simple. CSWAP stands for "controlled swap" and describes exactly what the gate does. If the first input is a 0, the three outputs are the same as the three inputs. If the first input is a 1, the second and third outputs are swapped.

Here is the ever-so-important truth table.

in  | out
----+----
000 | 000
001 | 001
010 | 010
011 | 011
100 | 100
101 | 110
110 | 101
111 | 111


## The Challenge

You goal is to write a program that takes a truth table as input and constructs a logic circuit to match it. (other ideas are taking a non-CSWAP circuit as input and converting it to CSWAP).

Here are the rules of circuit design:

• A circuit has a certain number of inputs and outputs, the quantities of which will be given.
• You have an unlimited supply of CWAP gates with which to construct circuits.
• You also have an unlimited supply of constants (a source that always takes on the assigned value) and trash bins (a place to send an unneeded bit).
• Each data source (circuit input / gate output / constant) must be linked via wire to exactly one data sink (circuit output / gate input / trash bin), and vice-versa.
• Possible extra rule: no loops in the circuit.

## ASCII representation

Using ASCII to draw the circuits may be unnecessary, but here is how it could be done.

• Wires are - and |, which connect the two horizontally or vertically adjacent cells.

• Inputs are capital letters, while outputs are lowercase letters. Constants are 1s and 0s. Trash bins are #.

• CSWAP gates are formed by OXX in any of the four basic orientations. The O is the control, while XX are the two inputs/outputs to be swapped. I might need to adjust this so that adjacent gates with multiple orientations are unambiguous.

AND gate

A-O-#
B-X-#
0-X-a


NOT gate

A-O-#
0-X-#
1-X-a


(more details coming sometime not now)

# Game Of Riches

This is a programming challenge based off the game AdVenture Capitalist.

## Goal Of The Game

The goal is to have the most angel investors after 1 month (2,592,000 seconds) of gameplay.

## Angel Investors

Angel Investors are the primary way to increase your profit in the long run. Angel Investors can be sacrificed for Angel Upgrades. Angel Investors also increase your profit by ANGEL_EFFECTIVENESS% each. For example, 20 angel investors increase your profit by 40%. You earn Angel Investors in proportion to the square root of your life earnings. The catch is that Angel Investors can only be used after a reset.

ANGEL_EFFECTIVENESS is 2 by default. It can be increased by unlocks and upgrades.

Angel Investors are earned according to this formula: 150 * sqrt(LIFETIME_EARNINGS / 1e15)

## Money

You earn money through the use of businesses. Money is used to purchase businesses and upgrades. The more money you have earned in your lifetime (since your program started execution), the more angels flock to your cause.

## Businesses

Businesses can earn you money. There are 10 types of businesses. The price of a business increases exponentially. You can also earn unlocks by achieving certain numbers of businesses. You start with 1 lemonade stand.

Name               |    Base Price   |  Base Profit / second  | Price Increase per Purchase
-------------------------------------------------------------------------------------------
LEMONADE_STAND     |              $4 |$1.66 | 7%
NEWSPAPER_DELIVERY |             $60 |$20 | 15%
CAR_WASH           |            $720 |$90 | 14%
PIZZA_DELIVERY     |          $8,640 |$360 | 13%
DONUT_SHOP         |        $103,680 |$2,160 | 12%
SHRIMP_BOAT        |      $1,244,160 |$6,480 | 11%
HOCKEY_TEAM        |     $14,929,920 |$19,440 | 10%
MOVIE_STUDIO       |    $179,159,040 |$58,320 | 9%
BANK               |  $2,149,908,480 |$174,960 | 8%
OIL_COMPANY        | $25,798,901,760 |$804,816 | 7%


## Unlocks

Unlocks are bonuses that are earned when a set goal has been achieved.

Example list (not actual):

LEMONADE_STAND;25;LEMONADE_STAND;PROFIT;2
NEWSPAPER_STAND;900;OIL_COMPANY;PROFIT;11
ALL;2222;ALL;PROFIT;2


## Upgrades

Upgrades are bonuses that are purchased with money or angels. See Angel Upgrades for details on upgrades that are purchased with angels.

Example list (not actual):

0;CASH;2.5e5;LEMONADE_STAND;PROFIT;3
1;CASH;500000;NEWSPAPER_DELIVERY;PROFIT;3
2;CASH;1e21;ANGEL;EFFECTIVENESS;1


## Angel Upgrades

Angel Upgrades are bonuses that are purchased with the sacrifice of angels. Angels sacrificed for this purpose are not regained on reset of a game.

Example list (not actual):

3;ANGEL;10000;ALL;PROFIT;3
4;ANGEL;1e32;CAR_WASH;COUNT;100
5;ANGEL;3.4e134;ANGEL;EFFECTIVENESS;10


## Resetting

When you reset your game, you lose all unlocks, upgrades, businesses, and money that you had. You start out with 1 lemonade stand all over again. So why would you want to do that? Because all angels that you may have earned last session are now activated. The angels that you didn't spend last session are also carried over. With these angels, you can earn larger profits faster than those earned in last session.

Lifetime earnings are not reset when you reset.

The angels gained with reset is 150 * sqrt(LIFETIME_EARNINGS / 1e15) - ANGELS - ANGELS_SACRIFICED

# Bot Details

Your bot will be an independent program that sends and receives input and output through stdout, and stdin. They are allowed to write to and create files in the directory that they are in. All files that they create must be destroyed on death of the program. The program must be deterministic. If the program does not finish the game within 5 minutes, it is disqualified.

Your bot can send through stdout requests for information. Here is a list of each request along with the reply:

Request                                                                                    Reply
------------------------------------------------------------------------------------------------
TIME                                                                        game time in seconds
TIME_LEFT                                                              game time left in seconds
MONEY                                                                               cash on hand
LIFETIME_EARNINGS                                                              lifetime earnings
ANGELS                                                                             active angels
ANGELS_SACRIFICED                                       number of angels sacrificed in life-time
ANGELS_GAIN                                   number of angels that would be gained with a reset
COUNT type†                                                                       number of type
COST type†                                                                     cost of next type
PROFIT type†                                                               profit of all of type
UPGRADE or CASH_UPGRADE                                     the next cash upgrade you can afford
ANGEL_UPGRADE                                              the next angel upgrade you can afford
UPGRADES                                              the newline separated list of all upgrades
CASH_UPGRADES                                    the newline separated list of all cash upgrades
ANGEL_UPGRADES                                  the newline separated list of all angel upgrades
UPGRADE id                                                         the description of an upgrade
NEXT_UNLOCK type†                                                 the next unlock with type type
UNLOCKS                                                the newline separated list of all unlocks
UNLOCKS type†                           the newline separated list of all unlocks with type type
UNLOCK id                                                           the description of an unlock


† One of LEMONADE_STAND,NEWSPAPER_DELIVERY, CAR_WASH, PIZZA_DELIVERY, DONUT_SHOP, SHRIMP_BOAT, MOVIE_STUDIO, BANK, OIL_COMPANY, ALL

These commands return no value:

Request                                                                                                  Action
---------------------------------------------------------------------------------------------------------------
WAIT seconds                                                                              warps forward in time
WAIT_MONEY x                                                                     waits until you have x dollars
WAIT_ANGEL x                                                                      waits until you have x angels
BUY type amount                 purchases items one at a time, waiting as needed until you can afford each item
RESET                                                                                        resets the session
BUY_UPGRADE id                                                                             purchases an upgrade
If you can't afford the upgrade it will wait until you can afford it if it is a CASH upgrade or will return
immediately if it is an ANGEL upgrade


Format of an upgrade string: id;purchased[5];typeOfUpgrade[1];cost;bonus_string
Format of an unlock string: id;achieved[5];typeOfUnlock[2];amountNeeded;bonus_string
Format of a bonus string: type[3];subtype[4];amount

If subtype is PROFIT or COST, the bonus is applied multiplicatively, otherwise the bonus is applied additively.

[1]: One of CASH, ANGEL
[2]: One of LEMONADE_STAND,NEWSPAPER_DELIVERY, CAR_WASH, PIZZA_DELIVERY, DONUT_SHOP, SHRIMP_BOAT, MOVIE_STUDIO, BANK, OIL_COMPANY, ALL
[3]: One of ANGEL, LEMONADE_STAND,NEWSPAPER_DELIVERY, CAR_WASH, PIZZA_DELIVERY, DONUT_SHOP, SHRIMP_BOAT, MOVIE_STUDIO, BANK, OIL_COMPANY, ALL
[4]: EFFECTIVENESS if type is ANGEL; otherwise one of COUNT, PROFIT, COST
[5]: One of true or false

TODO

## Score:

Your score is determined as log10(ANGEL_TOTAL). The person with the largest score wins the contest.

ANGEL_TOTAL is determined by adding all active angels, sacrificed angels, and the number of angels you would gain with a reset.

## Leaderboard:

N/A

tag: code-challenge