459
\$\begingroup\$

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.

The Sandbox works best if you sort posts by "active".

Add Proposal

Search the Sandbox

Browse your pending proposals

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]

\$\endgroup\$
  • \$\begingroup\$ How are tags added to questions? \$\endgroup\$ – guest271314 Jan 9 at 7:51
  • \$\begingroup\$ @guest271314 You can use this markup to create a tag in a draft: [tag:code-golf] \$\endgroup\$ – DJMcMayhem Aug 29 at 15:19
  • \$\begingroup\$ Why no featured anymore? Can't we have it auto-added or something? \$\endgroup\$ – JL2210 Sep 26 at 15:57
  • 1
    \$\begingroup\$ @JL2210 We now have a permanent info box that links to the Sandbox, so the featured tag isn't necessary \$\endgroup\$ – caird coinheringaahing Sep 29 at 13:43
  • \$\begingroup\$ 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 . \$\endgroup\$ – AZTECCO Oct 5 at 19:39

2562 Answers 2562

0
\$\begingroup\$

Two-Symbol n-state Universal Turing Machine

A program is defined as a set of transition rules from one state to another based on the current state and symbol, optionally moving the tape head left or right.

The goal is to produce a program that satisfies all of the following criteria:

  • It is a two-symbol Turing Machine program.
  • It emulates a two-symbol Turing Machine program that is represented on the tape.
  • where all tape that is not data is initialised to one symbol (designated 0 - the other is 1).

There are two scoring criteria:

  1. The number of states. Smaller is better.
  2. The compressibility of the program format (see below).

There is an individual scoring for each criterion and a combined position. The combined position is the sum of the ordinal positions in the leaderboard for each criterion (e.g. if your solution is 1st for number of states but 4th for compressibility it has a combined position of 5th). In the likely event of a tie, the compressibility of the program format is the tie-breaker.

Compressibility of the Program Format

The compressibility of the program format is defined as the number of (additional) states required to write the program onto a blank (0) tape, move the head to the start position of the program and start running the emulator on the program (change state to a correct emulator state). Sandbox note: Hand-compressed test-cases? Average-case Big O?

\$\endgroup\$
  • \$\begingroup\$ Todo: Work in a reference to this article and how a good solution to this challenge will reduce the upper bound for the maximum computable value of the Busy Beaver function. \$\endgroup\$ – wizzwizz4 Sep 22 '17 at 20:49
  • \$\begingroup\$ Is there a way to tell the Kolmogorov complexity when compressed through a certain method? It seems like the compressibility of the input format is poorly defined and will vary between inputs. \$\endgroup\$ – wizzwizz4 Sep 22 '17 at 20:54
  • \$\begingroup\$ I'm not quite seeing the busy beaver connection. Clearly it's not about emulating a single program, because in general the program itself would have fewer states than the program which puts it onto the tape and then runs the emulator; so it must be about some kind of loop over all programs, but then you run into undecidability of the termination of the emulator programs, meaning that the emulator certainly doesn't terminate. \$\endgroup\$ – Peter Taylor Sep 23 '17 at 20:25
0
\$\begingroup\$

Six Flags over HTTP

Let's say you need to transmit six boolean flags in a URL string. Obviously you could do it with six ones or zeroes, but you want better compression. With a little math you can pack them into two characters using 0-7 octal.

How about mapping all six to a single ASCII character? Here we have a problem: you are not allowed to use , / ? : @ & = + $ # or space. Now the range of printable ASCII no longer has 64 valid characters in a row.

In Javascript (or another language that can run from a web page, if any), what is the shortest code for a pair of functions to encode and decode this data, between an array of six booleans and a single character?

\$\endgroup\$
  • \$\begingroup\$ -1 language restriction, most languages have HTTP libraries so I think any language should be allowed \$\endgroup\$ – ASCII-only Sep 24 '17 at 13:11
  • \$\begingroup\$ This challenge could be improved by rephrasing it to: "Write a bijective function between an array of six booleans and a single printable character excluding the characters ,/?:@&=+$# ". Mentioning that the encoder and decoder should be separate programs/functions would be helpful. Also, may the encoder and decoder share code? \$\endgroup\$ – fireflame241 Sep 24 '17 at 22:08
0
\$\begingroup\$

It’s raining numbers! Better to get a good umbrella!

Your task is to take in one integer input and print a “raining” alternating pattern with that number, and an umbrella of appropriate size to protect yourself from such a rain!

Examples

1 =>

  1
 _|_
/   \
-----
  |
  C


2 =>

  2  
      2
 ___|___
/       \
---------
    |
    |
    C


3 =>

  3       3
      3  
  3       3
 _____|_____
/           \
-------------
      |
      |
      | 
      C


4 =>

  4       4
      4       4
  4       4
      4       4       
 _______|_______
/               \
-----------------
        |
        |
        |
        |
        C


10 =>

  1       1       1       1       1
  0       0       0       0       0
      1       1       1       1       1
      0       0       0       0       0
  1       1       1       1       1
  0       0       0       0       0
      1       1       1       1       1
      0       0       0       0       0
  1       1       1       1       1
  0       0       0       0       0
      1       1       1       1       1
      0       0       0       0       0
  1       1       1       1       1
  0       0       0       0       0
      1       1       1       1       1
      0       0       0       0       0
  1       1       1       1       1
  0       0       0       0       0
      1       1       1       1       1
      0       0       0       0       0    
 ___________________|___________________
/                                       \
-----------------------------------------
                    |
                    |
                    |
                    |
                    |
                    |
                    |
                    |
                    |
                    |
                    C

Rules

  • The output should use only the ascii characters _ | - / \ C, space, and the digits (no tabs are allowed).
  • Numbers should have an alternating pattern, two digits on the same line are separated by 7 spaces.
  • Number with more than one digit must be written vertically.
  • The size of the first line of the top of the umbrella should be equal to 4n-1, for input n, centered below the “rain”; the size of the second line should be equal to 4n+1.
  • The shank of the umbrella under the top is centered and should be of height n (the | characters), and terminated by a C handle.
  • Lines can have trailing spaces.

This is a task, so the shortest solution is any language wins.

\$\endgroup\$
  • \$\begingroup\$ shortest solution in any \$\endgroup\$ – Adám Sep 27 '17 at 7:36
  • \$\begingroup\$ I think that you should explicitly state the input for each example output. \$\endgroup\$ – H.PWiz Sep 27 '17 at 9:21
  • \$\begingroup\$ Allowed whitespace should be mentioned in the first rule. Regular spaces seem obvious, but using tab characters in place of 4 spaces could be used and it's a good idea to explicitly allow or forbid it. Also, that rule should start with "The output should..." to clarify that this is not restricted-source \$\endgroup\$ – Kamil Drakari Sep 27 '17 at 14:46
0
\$\begingroup\$

Count letter frequency

Inspired by question Tweetable hash function challenge, you should take the English dictionary used there and produce a program or function that outputs the the absolute and relative frequency of each character. It is CASE SENSITIVE and the APOSTROPHE is also accountable as a real letter.

Example of a valid output format (but with stupid guessing values):

A      5566    20%
...
Z        60     0.2%
a     27000    30%
...
z       120     0.01%
'       450     3.5%

It is , but no answer will be accepted. Wanna know shortest script for each language.

\$\endgroup\$
  • 1
    \$\begingroup\$ -1 (01) Don't rely on another challenge to define yours; include all the information we need in your write-up. (02) Make an effort to come up with some actual test cases - do you honestly expect us to verify our solutions against "stupid guessing values"? \$\endgroup\$ – Shaggy Sep 30 '17 at 0:55
0
\$\begingroup\$

Sort a nested object by nested value

Your goal is to sort a nested object by a nested value. What does that mean? For example:

#1: Input

{
    foo: {
        category: "A",
        hello: "world",
        color: "blue"
    },
    bar: {
        category: "B",
        cu: "cumber",
        color: "blue"
    },
    baz: {
        category: "A",
        let: "tuce",
        color: "green",
    }
}

#1a: Output sorted by category

{
    A: {
        foo: {
            hello: "world",
            color: "blue",
        },
        baz: {
            let: "tuce",
            color: "green"
        }
    },
    B: {
        bar: {
            cu: "cumber",
            color: "blue"
        }
    }
}

#1b: Output sorted by color

{
    blue: {
        foo: {
            hello: "world",
            category: "A"
        },
        bar: {
            cu: "cumber",
            category: "B"
        }
    },
    green: {
        baz: {
            let: "tuce",
            category: "A"
        }
    }
}

Note that the sorting key is always deleted from the objects (when sorting by color none of the items contain color).

Your task

Given an object, and a sorting key (a string), output the sorted object as shown.

Rules

  • You can always assume that the value of the sorting key is a string (as it also needs to be a key in the output)
  • You can always assume that the given sorting key exists in all values
  • Sorting will only occur on the first-level objects, but the sorting key can be nested (see test case #2)
  • The object may be a JSON object, a python dict, a JS object, etc. but must always have string only keys.
  • You may accept the object as a JSON string and/or return a JSON string.

Test Cases

#2: Input

Sort by: rating.healthiness

{
    icecream: {
        sweet: true,
        rating: {
            tastiness: "8",
            healthiness: "4"
        }
    },
    pizza: {
        sweet: false,
        rating: {
            tastiness: "9",
            healthiness: "3"
        }
    },
    chocolatecake: {
        sweet: true,
        rating: {
            tastiness: "8",
            healthiness: "3"
        }
    }
}

#2: Output (sorted by rating.healthiness)

{
    "3": {
        pizza: {
            sweet: false,
            rating: {
                tastiness: "9"
            }
        },
        chocolatecake: {
            sweet: true,
            rating: {
                tastiness: "8"
            }
        }

    },
    "4": {
        icecream: {
            sweet: true,
            rating: {
                tastiness: "8"
            }
        }
    },
} 

Sandbox Questions

  1. I really need to make the question clearer. Any thoughts? How can I better describe the task?
  2. Is this a duplicate?
  3. I'm guessing I need a better title. Any ideas?
  4. Should I make the input a JSON object or just a general object?
  5. Are multi-level nested objects even possible? Would it be too easy without them?
  6. Should I also allow booleans & numbers as the value for the sorting key (and then in a key form it would be stringified)?
\$\endgroup\$
0
\$\begingroup\$

Output the Yggdrasil graph

In Norse mythology, Yggdrasil, or the world tree, is a giant tree that spans the entire universe and connects all nine worlds of the Norse mythology together. Here, we shall take a rather liberal reinterpretation of the term "world tree" - it's the tree that contains all other trees as subgraphs. Not only that, but each graph is present everywhere in Yggdrasil. Clearly, the only way to achieve that is if every node in the graph has infinitely many neighbors.

Yggdrasil is the unique (up to isomorphism) non-empty graph with the two properties that each vertex has ℵ₀ neighbors and that there is a unique simple path between any two vertices. In other words, Yggdrasil is the Cayley graph of the free group with countably infinitely many generators. Your goal is to output this graph.

Nodes can be given any printable label of your choice, as long as they are non-empty and unique within the graph. Edges shall be denoted as pairs of vertices in either order. It must be clear from the output which are the two nodes in a graph (a-b-c is not an acceptable representation of an edge from a-b to c, but ["a-b", "c"] is fine). In the output, each edge shall be output on a single line, and different edges shall go on different lines.

The output should be just the list of edges in the graph, one edge per line. Each edge in the graph must be output exactly once, and in a finite amount of time (barring memory limitations). Edges not in the graph must not be output. For example:

  • Listing the edges in breath-first order is not sufficient, as any edge disjoint from the root would not get output.
  • Listing the edges in depth-first order is not sufficient, as no more than two edges of any node would ever get output.
  • It is sufficient (but not necessarily optimal) to generate the output by repeating (for each node in a copy of the list of known nodes, take the first unknown child, output the edge to it and add it to the list of known nodes).

The sufficient example above will output, if nodes are labeled 0, 0 1, 0 2, 0 1 1, ... :

0 => 0 1
0 => 0 2
0 1 => 0 1 1
0 => 0 3
0 1 => 0 1 2
0 2 => 0 2 1
0 1 1 => 0 1 1 1
...
\$\endgroup\$
  • \$\begingroup\$ So basically we have a countably infinite set of vertices V, a countably infinite index set I, and an injection (V x I) -> V. Since any bijection is an injection, we can use minor variants of e.g. codegolf.stackexchange.com/q/8892/194 , codegolf.stackexchange.com/q/78606/194 , codegolf.stackexchange.com/q/48705/194 with a loop for(n=0;;n++) wrapped round to create a valid answer. So although quite well disguised this is actually a dupe. \$\endgroup\$ – Peter Taylor Oct 3 '17 at 8:34
  • \$\begingroup\$ @PeterTaylor not sure how that would work. Are you trying to output the complete infinite graph rather than the infinite order regular tree? \$\endgroup\$ – John Dvorak Oct 3 '17 at 9:00
  • \$\begingroup\$ Use the reverse direction of the bijection: N -> (N x N). Then for(n=0;;n++)print(unpair(n)[0],"=>",n). Every node has an infinite number of successors, but each node has only one predecessor, so it's a tree. For the previous questions which use a bijection N -> (Z x Z) it's ever so slightly more subtle: to enumerate the entire tree we need to add in a bijection N -> Z and write for(n=0;;n++)print(unpair(n)[0],"=>",z(n)), but there are some very simple bijections N -> Z. \$\endgroup\$ – Peter Taylor Oct 3 '17 at 9:28
0
\$\begingroup\$

Is my Sukkah Kosher?

Do not rely on this text for questions of Jewish law!

You will be given a floor plan of a sukkah as follows:

  • A rectangular 2D text (in any reasonable format).
  • The first and last rows and columns will consist of printable ASCII (32-126).
  • All interior characters will be spaces.

Determine if the sukkah is acceptible according to these simplified rules, using the scale of one character width/height representing the tefach unit.

  • The inner area, as encompassed by the completion of the two longest solid walls into a square, must be at least 6 units by 6 units.

  • If the two longest solid walls are across from each other, then the shorter one must be at least 6 units long, and the length with with they are diametrically across from each other must also be 6 units long.

  • There must be an additional wall which is at least one unit long.

  • The walls may be made of any material, i.e. any character except space.

  • Walls with single unit gaps are still considered solid.

You may answer with any two distinct values, but please specify if different from true/1 and false/0. Explanations are appreciated.

Acceptable

oOOOo.ooo...o--o   
#              @   
#              )   
#              (   
#                  
|                  
#                  
+++++++*******     

oOOOo.ooo...o--o   


                 @   
                 @   
                 @   

   +++++****         

o O o o o . o        


                 @

                 @   
                 @   

   +++++****        

Not acceptable

oOOOo.ooo...o--o   
#              @   
#              )   
               (   

|                  
#                  
++++      ****     

       oOOOo.ooo..


                 @   
                 @   
                 @   

+++++****         

o O o o o . o        


                 @

                 @   
                 @   
                 8  
                 8

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

A Conc-urn-ing Problem

You have a mysterious urn, which contains 0 <= n <= 10 sets of k balls. Each set of balls shares a numeric label, from zero to n-1. You perform a repeated experiment, wherein you remove a ball from the urn, and note its number. If the number of balls in the urn with the same label as the ball you removed has the highest or tied for highest frequency still in the urn, you put the ball back in.

Taking the recorded results of each of the trials yields an infinite sequence. For example, you might have for n=2, k=2 pulled: 1001000000...

Given n and k write a program or function that returns a regular expression which will match any valid real number generated by this process, and which fails to match any other real number.

Sandbox

This is missing quite a bit (haven't written a program yet), but I'm not sure if it is too tedious the way that it currently is. It's somewhat boring if restricted to n=2 but rather quickly becomes tedious after that. Since most of the result would be symmetric, would it make sense to only require the "first" result? This also seems like it removes too much of the interest in the problem.

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

Search Stack Overflow for Duplicates

The Stack Overflow search algorithm has been under fire recently. Several problems with the search algorithm being flawed exist, but one of the most important issues raised is with duplicates:

[...] The search engine is used while authoring a question to find potential duplicates. At that point there is no way for you to take advantage of its features through custom search operators, and it absolutely, positively must be as good as an external search engine in this scenario. Unfortunately, it isn't. – IInspectable (source)

A flawed duplicate search algorithm causes a lot more work for the comparatively few reviewers and duplicate closers than there should be, by not informing the question askers that the question that they are attempting to post is a duplicate. It is also bad for the question askers, preventing them from finding the answer to their question until somebody reviews the question.

This is where you come in. Given the title, body and tags of a question, output a list of 25 relevant questions in a reasonable format (e.g. question ids). Your program should run within 500ms on the Stack Exchange servers for each question. (Sandbox note: How fast are the Stack Exchange servers? What conversion factor should I use to test on my hardware?) You have access to all T-SQL database tables available from the Stack Exchange Data Explorer, but the current question that needs to be checked for duplicates will be absent from all tables (so it isn't found as a duplicate of itself). To test the algorithm, it would be tested on a random selection of or all of the existing duplicates on Stack Overflow - the algorithm with the lowest average position of the duplicate master(s) in the list would win, where "not in the list" is counted as 50. The set of existing duplicates tested would be the same for all algorithms to test - rationale includes scoring of questions with multiple duplicate masters. The search algorithm should be deterministic. It is allowed to prepare a cache table beforehand - none of the duplicates to test will be passed to this part of the algorithm. This cache table should be able to be updated with new questions without being completely rebuilt. (Sandbox note: How to score this?)

(Sandbox note: The final paragraph should be spread out and better laid out and reworded, but I think the wall of text contains enough information.)

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

Constructively golf true primes!


Introduction

A recurring pattern that I see in challenge involving primes is the (over-) use of prime-checking built-ins and of factorization built-ins. However, I kinda don't trust especially the latter, which is why today, we're gonna build primes and include a certificate that the result is actually a prime.

Input

A positive integer n denoting the length of the resultung prime in a basis of your choice.

Output

A list of primes in the base you picked above, one of these primes is of length n and one of these primes is smaller than 20.

What to do?

Your challenge is to generate a prime of length n of which the primality can be reduced to the primality of one of the following primes: [2,3,5,7,11,13,17,19]. This can be achieved using Pocklington's criterion. Now the idea is to chain up from any of these primes using said criterion to a prime of appropriate size, while also outputting the intermediate steps so primality can be checked easily.

For your convenience, I shall reproduce the relevant theorem here:

Let N>1 be an integer and suppose there exist a,q such that

  • q is prime
  • q divides N-1
  • q>sqrt(N)-1
  • a^(N-1) mod N == 1
  • gcd(a^((N-1)/q)-1,N)=1

Then N is prime.

And as you might see, your initial set of primes (as candidates for q) is limited to the above short list of primes smaller than 20.

Who wins?

This is so the shortest solution in bytes wins!
However this is also so all solutions must run in (expected) polynomial time in n. Standard IO and Loophole rules apply.

Got any help?

If you need algorithmic help, I suggest you consult the Handbook of Applied Cryptography, chapter 4 (PDF), algorithm 4.62 (on page 153 or 22 in the PDF) or you independently look for Maurer's prime generation algorithm (originally published here).

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

I got them Mad Matrix Moves


Given a list of edges representing a simple directed graph and (optionally) the number of vertices n>1, output the adjacency matrix of that graph.

The vertices will always be numbered consecutively starting at 0 (or 1 -- your choice).

The adjacency matrix is defined as the n by n square matrix M such that M[i][j] is 1 if there is an edge from vertex i to vertex j and 0 otherwise.

Example

For this example and the test cases, we will have the vertices numbered starting at 1.

Let's use the sample input [(1,2),(1,3),(3,2)]. Since there are vertices numbered 1-3, n=3 and our output is a 3 x 3 matrix.

The output should be

[[0, 1, 1],    <= (1,1) doesn't exist in the input list, (1,2) does, (1,3) does.
 [0, 0, 0],    <= (2,1) doesn't exist, same with (2,2) and (2,3)
 [0, 1, 0]]    <= (3,1) doesn't exist, (3,2) does, and (3,3) doesn't

(concisely represented as [[0,1,1],[0,0,0],[0,1,0]] in test cases).

Notes

  • Every vertex is the start and/or end of at least one edge.
  • You may replace 1 and 0 in the output with any two consistent distinct values of your choosing.
  • The input graph is simple, meaning that it has no loops nor multiple edges (e.g. no edge [1,1] or graph [[1,2],[1,2]])
  • The graph is directed, meaning that each edge has a start and an edge (e.g. the edge [1,2] is distinct from [2,1])
  • Every vertex is an endpoint of at least one edge
  • This is , so shortest code in byes in each language wins.

Test Cases

One test case per line. Each test case is in the format edges, n => output.

[(1,2)], 2 => [[0,1],[0,0]]
[(2,1)], 2 => [[0,0],[1,0]]
[(1,2),(2,1)], 2 => [[0,1],[1,0]]
[(1,2),(1,3),(3,2)], 3 => [[0,1,1],[0,0,0],[0,1,0]]
[(1,2),(2,3),(3,4),(4,5)], 5 => [[0,1,0,0,0],[0,0,1,0,0],[0,0,0,1,0],[0,0,0,0,1],[0,0,0,0,0]]
[(1,2),(3,4),(4,3),(2,1),(2,4),(4,2)], 4 => [[0,1,0,0],[1,0,0,1],[0,0,0,1],[0,1,1,0]]
[(1,2),(2,3),(3,4),(4,5),(2,1),(3,2),(4,3),(5,4)], 5 => [[0,1,0,0,0],[1,0,1,0,0],[0,1,0,1,0],[0,0,1,0,1],[0,0,0,1,0]]
[(1,2),(3,1),(2,3),(1,1),(2,1)], 3 => [[1,1,0],[1,0,1],[1,0,0]]
[(1,2),(3,2),(1,3),(5,4),(5,6),(5,1),(2,3),(1,5),(5,2),(3,6),(4,5),(5,3),(2,1),(3,5),(4,6),(6,3),(6,5),(4,2),(3,4)], 6 => [[0,1,1,0,1,0],[1,0,1,0,0,0],[0,1,0,1,1,1],[0,1,0,0,1,1],[1,1,1,1,0,1],[0,0,1,0,1,0]]
\$\endgroup\$
0
\$\begingroup\$

Get the Average Number of Bytes for an Answer

Have you ever wanted to know the average number of bytes all the answers to a given code golf question took? Probably not. But I did!

Input

You'll have to take in a link to a codegolf exchange question by text or you can run this in a browser extension/user-script. If you have a clever way of identifying the webpage and producing the necessary output, just ask about it in the comments, and I'll update the question as long as it doesn't violate the rules. The input will be a link to a codegolf question. It will include http::// or https:://. The slashes will be facing this way: "/". The link may not be to a code-golf challenge specifically, but it could be something like a code-challenge.

Output

If the user inputs something that isn't to a code golf website output something along the lines of "Hey! That's not a link to a code-golf challenge" If the user inputs a link that links to the codegolf exchange, but isn't a codegolf (maybe it's a code-challenge) the program should output anything that is not a natural number.

If there are strikethroughs through previous amounts of bytes a solution took, those should not be included in the average. If the person answering the question in one of the links did not conform to formatting standards, the program doesn't have to account for it. Minor differences will be allowed. Specifically, the number of bytes should be within 5 lines of the top of the answer and bolded.

All answers should be rounded to the nearest whole number with .5 rounding up.

Examples

Input:

https://codegolf.stackexchange.com/questions/54038/average-out-two-lists

Output:

95

Winning Criterion

The winner will be given by (1 / execution time (s) + bytes).

If you know of anything that I missed, comment below.

\$\endgroup\$
  • \$\begingroup\$ What if I make the output message my entire program and then just exec it? \$\endgroup\$ – HyperNeutrino Oct 10 '17 at 23:30
  • \$\begingroup\$ @HyperNeutrino I'm not really sure what that means. If it takes a link in and outputs the answer then you've completed the challenge. If it outputs the answer and 20 lines of unnecessary information that the user can see, I would say that that doesn't pass the program. \$\endgroup\$ – Byte11 Oct 10 '17 at 23:34
  • \$\begingroup\$ My point is, what if I make a string containing my entire program, use string slicing to output a good falsy message, and then use exec to run the string? Would I be exempted from counting the bytes of my string? \$\endgroup\$ – HyperNeutrino Oct 11 '17 at 0:05
  • \$\begingroup\$ @HyperNeutrino That's a smart way to get around the rules. No, you wouldn't be exempt from the rules, but from a literal interpretation, you could argue that that is allowed. How should most concisely update my rules to prevent this? \$\endgroup\$ – Byte11 Oct 11 '17 at 0:08
  • \$\begingroup\$ I'd just guarantee that the input will follow a specific format, because making the input contain backslashes, missing components, etc. is just a pain and doesn't demonstrate the answerer's ability to actually do what you really want. Essentially, don't add too much fancy stuff \$\endgroup\$ – HyperNeutrino Oct 11 '17 at 0:22
  • \$\begingroup\$ @HyperNeutrino Okay, I've updated the question. \$\endgroup\$ – Byte11 Oct 11 '17 at 0:47
  • \$\begingroup\$ along the lines of → unclear what you're asking. \$\endgroup\$ – user202729 Nov 3 '17 at 13:21
  • \$\begingroup\$ Also what exactly is the winning criteria? Another point: A link to this site never have https:://, only https://. \$\endgroup\$ – user202729 Nov 3 '17 at 13:21
0
\$\begingroup\$

Optimised Hashing

For a given set of input, output a program that can 'hash' the input with a minimum number of collisions.

The Challenge

Write a method or function that receives an array of Strings (see input for more detail) and outputs a full program. This program must, for each String in the original input array, print to STDOUT (or equivalent) some positive integer i where i<100 and is unique for that input.

The Input

Each program will be tested with 4 different input sets of 50 unique Strings;

  • 50 English words of the same length.
  • 50 English words of differing lengths.
  • 50 randomly generated character strings of the same length
  • 50 randomly generated character strings of differing lengths

All Strings in all inputs will only contain the character set [a-zA-z] (ASCII values 65-90 and 97-122) and will all be no more than 20 characters long.

Special Rules

  • Standard loopholes are forbidden.
  • Inbuilt hashing functions are not allowed.
  • You must provide a free and easily accessible environment to compile and run both programs with your answer.
  • I reserve the right to discount any program which takes more than 10 minutes to complete any test.

Scoring

You will be scored by combining the following;

  • The byte count of your original program
  • The byte count of each outputted program
  • 5 penalty points for each 'collision'.

I will keep and update a leader board as programs are added and I can test them.

Please let me know if I've missed anything; this is my first question idea!

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

Hunting The Wren

Write a program to produce the words to the folk song Hunting The Wren.

http://www.youtube.com/watch?v=80n4CW0dE1A

"We're hunting the wren." says Robin to Bobbin.
"We're hunting the wren." says Richard to Robin.
"We're hunting the wren." says Jack of the land.
"We're hunting the wren." says everyone.

"Where oh where?" says Robin to Bobbin.
"Where oh where?" says Richard to Robin.
"Where oh where?" says Jack of the land.
"Where oh where?" says everyone.

The song continues with the same structure.

"In yonder green bush."
"How get him down?"
"With sticks and stones."
"How get him home?"
"The brewer's big cart."
"How will we eat him?"
"With knives and forks."
"Who'll come to the dinner?"
"The King and the Queen."

The song concludes with three more verses, which because they have no repetition, we'll omit for the purposes of this challenge.

Rules

  • The program must produce the full words of the song as 54 or 55 lines of text.
  • Each verse of four lines must be separated by a blank line. A blank line on the end is optional.
  • You must not use a text decompression library. (GZIP the whole song is 380 bytes.)
  • Normal code golf rules apply. Shortest code wins.

C# Reference Implementation

public class Program
{
  public static void Main()
  {
    string[] starts = new [] {
      "We're hunting the wren.",  
      "Where oh where?",            "In yonder green bush.",
      "How get him down?",          "With sticks and stones.",
      "How get him home?",          "The brewer's big cart.",
      "How will we eat him?",       "With knives and forks.",
      "Who'll come to the dinner?", "The King and the Queen." };

    string[] ends = new [] {
      "says Robin to Bobbin.",      "says Richard to Robin.",
      "says Jack of the land.",     "says everyone."            };

    foreach (string start in starts)
    {
      foreach (string end in ends)
      {
        System.Console.WriteLine("\"" + start + "\" " + end);       
      }
      System.Console.WriteLine();
    }
  }
}
\$\endgroup\$
0
\$\begingroup\$

Pokémon Champion

*

This challenge is about writing the ultimate bot for battling Pokémon. Since knowledge of competitive Pokémon battling is necessary, I'll leave that to the experts at Smogon University.

Rules

  • Your bot must battle another bot in a Gen 7 Random Battle Format.
  • Your bot will be judged based on its performance in a round-robin tournament orchestrated by the author of the challenge, against all other submitted bots before a specific deadline.
  • In order to avoid reinventing the wheel, there are several frameworks already available to choose from. Unfortunately, a lot of these are written in Node.js, so you might still have some porting to do, unless this challenge decides to create its own framework for battling.
  • Since your bot will be connecting to a Showdown server using the existing Web Socket API, any error in your program that causes the bot to become non-responsive or to disconnect will automatically forfeit that match.
  • Standard loopholes apply, and do not exploit any possible bugs in the API. If you find a bug, please report it here.

Further Considerations

While in theory, I think this would be a great idea, I believe this would require a lot of time-investment and groundwork, which frankly I don't have the availability for right now, so anyone is free to take this over, but please be courteous and get my consent in The Nineteenth Byte first. Just @PatrickRoberts and wait for a reply before modifying this proposal.

* Not sure if it's preferable to write an API specifically for this challenge to eliminate the need for Web Socket communication, since there are already available platforms. The idea is to host an official tournament at a certain date (yet undecided) on Pokémon Showdown.

\$\endgroup\$
  • 1
    \$\begingroup\$ I could use a new bot on my side server (the one I've got doesn't know about Z-moves so even I can beat it at Ultimate Z...) \$\endgroup\$ – Neil Oct 18 '17 at 0:19
0
\$\begingroup\$

Is it a perfect loop?

Your task is to take a GIF or an animated image in any reasonable format as input (including taking the file name of a GIF in the current directory), and output whether it is a "perfect loop" - that is, the frames transition seamlessly from the end to the start, and a human cannot notice where it starts and ends at first glance. Return or print a truthy value if it is a perfect loop, otherwise print or return a falsy value.

Scoring

Winners will be determined from the percentage of test cases they get correct. In the event of a tie, highest votes wins. You can view test cases at https://ghostbin.com/paste/m3yaw. Show your score against the test cases when you post.

Input

If you are not taking input in a GIF, please provide a program that will convert a GIF to your desired format.

Images corresponding to a truthy value have been taken from /r/perfectloops and for falsy test cases, /r/almostperfectloops and /r/gifs.

Restrictions

  • Hard coding is not allowed (violates standard loophole 1 and 2).
  • You must provide consistent results for the same GIF (no randomness)
  • Remember, this is not , so byte count is not needed in your solution. Just post the language name and add the percentage correct when I comment.
\$\endgroup\$
  • \$\begingroup\$ I'm not sure it's as simple as comparing the first to the last frame, if it is we'd have duplicate frames. is this challenge allowing HTTP requests? \$\endgroup\$ – tuskiomi Oct 17 '17 at 21:15
  • \$\begingroup\$ If hashing the inputs is not allowed, then you should clearly define what constitutes a “perfect loop”. It's not good to extrapolate from a handful of test cases where the pass/fail cases are very similar. \$\endgroup\$ – japh Oct 18 '17 at 14:31
0
\$\begingroup\$

All the same digits

Task

For any two coprime integers n, b > 1 there exist infinitely many integers k > 0 for which n * k's representation in base b only contains the digit b-1.
This challenge's task is to output the smallest such k for given integers n, b.

Input

Two integers n, b with the above described properties in any reasonable format (integers, strings, ...). If your language does not support arbitrary precision integers, you can assume that n, b < 2**31.

Ouput

An integer k with the above described properties in any reasonable format (integer, string, ...). If your language does not support arbitrary precision integers, you can assume that k < 2**31.

Test cases

f(  n,     b) == k

f(  7,    10) == 142857
f(  13,    5) == 48
f(  14,   13) == 12
f(1728, 1729) == 1
f( 107,   99) == 54863250648363053681585635237627534906401818527472898624219397466199311510764517134614152141940101983414

To generate more test cases, take a look at my reference implementation written in Python 2.

Addendum

Fraction periods can also be used to calculate k (example given for n, b = 13, 10).

1/13             =      0.076923(076923)* (period length 6)
1/13 *  10**6    = 076923.076923(076923)*
1/13 * (10**6-1) = 076923
        999999   = 076923 * 13
               k =  76923
\$\endgroup\$
  • 2
    \$\begingroup\$ Not true. Consider n=b>1. You need a coprimality condition. \$\endgroup\$ – Peter Taylor Oct 17 '17 at 16:03
  • \$\begingroup\$ @PeterTaylor Thanks for noting. \$\endgroup\$ – Jonathan Frech Oct 17 '17 at 17:38
0
\$\begingroup\$

I'm posting this on sandbox first, because this might not be a good challenge for this site, or just too complicated, because it's about constructing a meaningful sentence. Please, tell me, if it's appropriate task for this site.

Also a note: If you want, I can wait for Christmas with this.

Back to the New Year!


You encounter a probably hard challenge.

Inspired by this answer by @dansalmo.

If we sum character codes in the string Happy new year to you!, we will get 2014. With later years, people started to modify the string, so it fits the current year:

  • 2015: A Happy New Year to You!
  • 2016: Happy New Year to you!!!

The challenge

Given an integer year, output a string meaning "Happy new year!". Sum of character codes should be equal to the integer.

Rules:

  • No default loop holes allowed
  • Output rules:
    • Meaning rules:
      • You must use the word Happy - you cannot use any other adjective instead.
      • You must wish a NEW year, no matter if it's 2010 or 2020!
      • You can only wish a happy new year - You can't wish a happy new Easter...
      • You can target the string to a person or group, or to everybody: Happy new year!, Happy new year, Soaku!, Happy new year, CodeGolfers!
      • You can add new words, but the sentence can't lose the meaning!
      • Output must have valid grammar, but you can mess up the punctuation. Just note that you can't use punctuation characters except trailing exclamation marks.
    • Letter case rules:
      • First word must start with uppercase letter.
      • Any other word can start with uppercase or lowercase.
      • Letters that aren't first should be lowercase. The only exception is when all letters in the word are uppercase.
    • Punctuation rules:
      • You are not allowed to use any punctuation characters, except on the end of the string
      • There must be exactly one or three exclamation marks ! at the end.
    • Spacing rules:
      • There must be exactly one space between words.
      • No line breaks allowed
      • Leading and trailing spaces/newlines are allowed, but they don't count in the character code sum. Word is the same as outputting Word.
    • Character rules:
      • You cannot use digits!
      • You must only use ASCII letters (the only exception are the trailing exclamation marks)
  • You can assume the input is an integer between 2000 and 3000

Test cases

examples, don't need to be the same

2001 - Happy new YEAR to MYSELF!
2002 - A VERY HAPPY NEW YEAR TO PPCG!
2003 - Happy NEW Year TO MYSELF!!!
2004 - A happy new year to me!
2013 - A HAPPY NEW Year To The SE!!!
2014 - Happy new year to you!
2015 - A Happy New Year to You!
2016 - Happy New Year to you!!!
2030 - A Happy New Year To PPCG!!!

Please, suggest any changes and upgrades in the comments

\$\endgroup\$
  • 5
    \$\begingroup\$ I think meaning "Happy new year!" is too unclear. There is no way to objectively enforce this. \$\endgroup\$ – Sriotchilism O'Zaic Oct 23 '17 at 17:38
0
\$\begingroup\$

Behavior Driven Golfing

Context

From wikipedia (emphasis mine): Behavior Driven Development (BDD) is largely facilitated through the use of a simple domain-specific language (DSL) using natural language constructs (e.g., English-like sentences) that can express the behavior and the expected outcomes.

Example in normal BDD (also from Wikipedia):

Story: Returns go to stock

As a store owner In order to keep track of stock I want to add items back to stock when they're returned.

The challenge:

Write a program that reads like a single English-like sentence that executes the meaning of that sentence.

Other details

  • The program must receive input of some kind (stdin, arguments are okay depending on your language's syntax).
  • The input can be limited in scope, (e.g. all real numbers, all positive even integers), but there must be infinitely many possible inputs assuming that your language doesn't have a cap.
    • For example, if the input is an integer, you don't actually have to handle integers beyond the language's cap, if your language happens to cap at 32 bit long, it just has to be infinitely many in theory but not necessarily in practice.
  • The program must have at least log(n) distinct outputs over an input space of size n.
    • For example, if there existed a language where convert to zero was a valid program, returning 0 on all inputs would not be okay, but printing a number of 0 equal to the base 10 number of digits of the input number would be okay.
  • The program should not error out on legal input.
  • Irregular case and unicode characters are allowed
  • Unicode characters will be interpreted as the similar character in English (so most commands in 05AB1E are allowed).
  • Words may be delimited by punctuation marks instead of spaces, but they must be delimited.
  • Punctuation should not be present in the middle of a word unless it's legal in English (such as an apostrophe in a contraction or a possessive)

Example valid answer for all requirements except the "must take input" requirement:

HQ9+

Print Hello, world.

Since only the H character is an instruction in this language, all the other characters are ignored, and the program prints hello, world. Since case is ignored, this program does what the english sentence says it will do.

\$\endgroup\$
  • 3
    \$\begingroup\$ As it's currently written, the task is way too broad. The task that the program should do must be narrowed and clearly specified (e.g., "add the input with itself") in order for this to be well-received. \$\endgroup\$ – AdmBorkBork Oct 20 '17 at 20:00
  • 2
    \$\begingroup\$ I like the challenge, but I think it should be popularity-contest rather than code-golf. I just feel like code-golf will attract too many answers similar to the example: pick a language that ignores most characters, then write a sentence that describes a built-in and includes that built-in as the only executed character. Popularity Contest seems like it would attract much more interesting answers. \$\endgroup\$ – Kamil Drakari Oct 20 '17 at 21:59
  • \$\begingroup\$ @KamilDrakari popularity-content is typically not well received, most of those are closed. \$\endgroup\$ – durron597 Oct 20 '17 at 23:20
  • \$\begingroup\$ I'm not exactly sure how we can measure "X is a similar character to Y" objectively.. Probably @Kamil is right and this should be a popularity contest. \$\endgroup\$ – ბიმო Oct 26 '17 at 19:02
  • \$\begingroup\$ @BruceForte, pop-con is not a "solution" to the problem that the spec is not objective. A pop-con should have an objective validity criterion and not be amenable to an objective scoring criterion. \$\endgroup\$ – Peter Taylor Oct 27 '17 at 12:04
0
\$\begingroup\$

Does the Riemann hypothesis hold?

I would like to earn a million dollars, and the hardest way to do it is apparently solving one of the Millenium problems, so let's focus on one: the Riemann hypothesis.

Now, how could I possibly ever solve it? By writing a computer program, of course! However, I am lazy, so I would rather have you do the work for me by making the program as short as possible (to minimize the number of key strokes required for me to verify your results)

The challenge

Your goal is to write a program in a language of your choice which would decide the Riemann hypothesis. More precisely, you should write a program which terminates iff the Riemann hypothesis fails.

Restrictions

  • The program has to work when running with empty input [Sandbox note: perhaps allow input but add it to byte count?]
  • Standard loopholes are forbidden.
  • Your program must provably terminate iff RH is false. For example, submitting two programs, one trivially terminating, one trivially not terminating, and claiming one of them works, is not allowed, since neither of the programs provably works.
  • You must give a proof of equivalence of your program's termination with RH failing, with references to other work allowed. I give myself the right to decide whether the work referenced is valid or not, to exclude the many proofs and disproofs of RH.
  • If the Riemann hypothesis doesn't hold, your program can throw an error, or simply exit, as long as the program cannot continue beyond that.
  • You may assume you have unlimited memory and time, and also that your number types can hold real numbers of arbitrary size to arbitrary precision.
  • This is , so the shortest code in bytes wins!

Sandbox comment

To address the comments below, let me clarify why this challenge is most definitely solvable. Note that the problem is not of the sort "give a counterexample to RH" (if it did, then it would fall under this discussion and I completely agree it would not be a good challenge). Instead, it asks for a program whose termination depends on RH, and then one can give valid solutions regardless of the fact that RH is not solved yet.

To give an analogy (following Deedlit's example), suppose we have replaced RH with Goldbach's conjecture. This conjecture surely is unresolved, but one can give a valid solution to the challenge, for example by following this pseudocode:

n = 4
while true:
 found = false
 for k from 1 to n-1:
  if k is prime and n-k is prime:
   found = true
   break
 if found == false:
  break
 else:
  n = n+2
return 0

If Goldbach's conjecture is false, this program will eventually terminate by returning 0 (namely, when it finds the first counterexample). Otherwise, it will stay in the while loop forever. Hence it would be a valid solution.

My challenge as it stands can be solved in a similar manner, perhaps using

one of the many known equivalents of RH.

\$\endgroup\$
  • \$\begingroup\$ codegolf.meta.stackexchange.com/q/11033/45941 \$\endgroup\$ – Mego Oct 27 '17 at 19:47
  • 1
    \$\begingroup\$ @Mego My proposed challenge doesn't fall under that discussion. It is not an open problem whether a solution for that problem is possible. \$\endgroup\$ – Wojowu Oct 27 '17 at 19:51
  • \$\begingroup\$ Relying on open problems for challenges is not a good idea. Either it will be impossible to answer because the problem isn't solved, or answers will be trivial copy jobs of the proof once the problem is solved. This challenge relies on both an open problem (Riemann hypothesis) and an unsolvable problem (halting problem). \$\endgroup\$ – Mego Oct 27 '17 at 20:42
  • 1
    \$\begingroup\$ @Mego The way I have phrased my problem makes it possible, but not trivial, once the Riemann hypothesis is unsolved. True, the problem trivializes once we get a (dis)proof of RH, but until then I don't see an issue with this problem. Also, I don't see how halting problem is in any way relevant here. \$\endgroup\$ – Wojowu Oct 27 '17 at 20:58
  • \$\begingroup\$ You don't see how the halting problem is relevant in a challenge for writing problems that halt iff some unsolved problem in mathematics is true? \$\endgroup\$ – Mego Oct 27 '17 at 20:59
  • 1
    \$\begingroup\$ @Mego Let me rephrase - I don't see how its unsolvability impacts the challenge in any way. \$\endgroup\$ – Wojowu Oct 27 '17 at 21:01
  • 3
    \$\begingroup\$ @Mego As an example, it is straightforward to write a program that halts if and only if the Goldbach conjecture is false. Simply test out even numbers one at a time until you find one that is not the sum of two prime numbers. The unsolvability of the halting problem doesn't have any bearing on this, since we aren't relying on an algorithm that determines the halting behavior of all programs. A program that halts precisely when the Riemann Hypothesis is true could be done similarly. \$\endgroup\$ – Deedlit Oct 27 '17 at 22:01
  • \$\begingroup\$ @Deedlit Can one also show that it is possible to write a program that halts iff Goldbach's conjecture is true? \$\endgroup\$ – Jonathan Frech Oct 27 '17 at 22:31
  • \$\begingroup\$ @JonathanFrech I believe that's an open problem. However, thanks to your comment I've realized I have mixed things up - my challenge should've been about RH being false, not true (so just like in Deedlit's example with Goldbach). Sorry if any confusion was caused. \$\endgroup\$ – Wojowu Oct 27 '17 at 22:43
  • \$\begingroup\$ @Wojowu Well, that seems solvable then. Would one, however, not simply loop through all complex numbers (as one has a lot of computational power), implement the zeta function (again, infinite computational power) and halt if they find a counterexample to the hypothesis? \$\endgroup\$ – Jonathan Frech Oct 27 '17 at 22:49
  • \$\begingroup\$ @JonathanFrech It needs to be quite a bit more than that, because there are uncountably many complex numbers, so you can't loop over them all even with unbounded computing power. I believe you can do it by evaluating a contour integral around rectangles in the complex plane and looping over these rectangles. And it gets annoying around the critical line. It's definitely more complicated than just implementing the zeta function, though. \$\endgroup\$ – Chris Oct 28 '17 at 1:58
  • \$\begingroup\$ @Chris Could one not loop through all possible sums of all rationals to approximate the reals, argue that every real is computable by an infinite sum of rationals, do that twice to gain a program which theoretically looks at every complex number, implement the zeta function and check if the hypothesis holds? \$\endgroup\$ – Jonathan Frech Oct 28 '17 at 12:02
  • \$\begingroup\$ @JonathanFrech It's not possible to look at all possible infinite sums of rational numbers. Some (in fact, most) are uncomputable, and either way there are just too many real/complex numbers. Try to implement your algorithm in a real language like C, you will see that this simply doesn't go through. \$\endgroup\$ – Wojowu Oct 28 '17 at 12:06
  • 2
    \$\begingroup\$ @JonathanFrech It is not possible to cycle through all possible complex numbers, but there are other ways which would let one verify the Riemann hypothesis. \$\endgroup\$ – Wojowu Oct 28 '17 at 12:17
  • 1
    \$\begingroup\$ @Chris err, yes, that's what I meant. \$\endgroup\$ – Wojowu Oct 28 '17 at 20:40
0
\$\begingroup\$

Are these numbers perfect for each other?


A perfect number is a number that is the sum of its divisors. Examples of perfect numbers are:

     | Divisors                                  | Divisor sum
-----+-------------------------------------------+-------------
6    | 1, 2, 3                                   | 6
28   | 1, 2, 4, 7, 14                            | 28
496  | 1, 2, 4, 8, 16, 31, 62, 124, 248          | 496

Similarly, numbers that are perfect for each other are numbers where each is the sum of the other's divisors.

     | Divisors                                  | Divisor sum
-----+-------------------------------------------+-------------
220  | 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110   | 284
284  | 1, 2, 4, 71, 142                          | 220

Challenge

Write a program/function that takes two positive integers and outputs a truthy/falsey value based on whether they are perfect for each other.

Specifications

  • Standard I/O rules apply.
  • Standard loopholes are forbidden.
  • The output must be consistent for both truthy and falsey values.
  • This challenge is not about finding the shortest approach in all languages, rather, it is about finding the shortest approach in each language.
  • Your code will be scored in bytes, usually in the encoding UTF-8, unless specified otherwise.
  • Built-in functions that perform this task are allowed but including a solution that doesn't rely on a built-in is encouraged.
  • Explanations, even for "practical" languages, are encouraged.

Test cases

Input         Output

1, 1          truthy
3, 7          falsey
6, 6          truthy
13, 42        falsey
220, 284      truthy
563, 492      truthy
1184, 1210    truthy

In a few better formats:

1, 1
3, 7
6, 6
13, 42
220, 284
563, 492
1184, 1210

1 1
3 7
6 6
13 42
220 284
563 492
1184 1210

Reference implementation

This is written in Haskell.

divisors :: Integer -> [Integer]
divisors 1 = [1]
divisors n = [i | i <- [1..n - 1], n `mod` i == 0]

perfectPair :: (Integer, Integer) -> Bool
perfectPair (a, b) = (sum $ divisors a) == b && (sum $ divisors b) == a

Try it online!

This challenge was sandboxed.

\$\endgroup\$
  • 2
    \$\begingroup\$ Although I wouldn't really VTC (seems fine to me), this is very likely to be closed as a dupe of Am I perfect (number)?. \$\endgroup\$ – Mr. Xcoder Oct 29 '17 at 19:46
  • \$\begingroup\$ it's also kinda trivial... Try it online! - 3 bytes, 05AB1E \$\endgroup\$ – Magic Octopus Urn Oct 31 '17 at 20:24
0
\$\begingroup\$

Self-language validator

Create a language validator, which takes a string/file that might or might not be syntactically in the language of your choice, and returns a value corresponding to whether or not it is a syntactically valid program in the implementing language.

  • At a bare minimum, your submission must return a truthy value for code where a strict implementation compiles/interprets without any problems, and must return a falsey value for code that even lax implementations cannot recognise as valid in your language.
  • Your submission must have cases where it returns a truthy value, and cases where it returns a falsey value.
  • As long as a construct is syntactically valid and could possibly be of the correct scope/type/whatever, it can be called valid. No need to dig into a repository to fetch documentation for an import or anything like that.
  • Constructs whose syntactic validity depends on the current runtime execution state do not need to be checked, as statically checking their validity would necessitate reasoning about program execution.
  • Appealing to external programs/libraries or to the compiler/interpreter, runtime, or standard libraries to parse or execute the string as language instructions for you would circumvent the whole point of this challenge, and thus is forbidden.
  • Standard loopholes apply.
\$\endgroup\$
  • \$\begingroup\$ I don't think quine is correct. Also, you might want to be more explicit that there must be a false case, as languages like Seriously are always syntactically valid. \$\endgroup\$ – ATaco Oct 30 '17 at 22:31
  • 1
    \$\begingroup\$ I wonder how many languages get trivial solutions to this. \$\endgroup\$ – Joshua Oct 30 '17 at 22:55
0
\$\begingroup\$

Budget my lunch!

I'm a man of habit, but I also like to live quite frugally so every day I make myself the same lunch consisting of;

  • 3 Falafel
  • 2 Flatbreads
  • A serving of houmous
  • Some lettuce

Now in order to make sure I always put aside enough money for my lunch I need a program that will calculate the total cost of these ingredients for x number of days, and that is where you come in!

The Challenge

Write a method that, when given two integers representing the start day and the number of days to calculate for, will return/print out a the total cost of my food for that number of days. There are several rules that this calculation follows;

  • Each pack of falafel contains 8 falafels and costs £1.50. However, every three days I get lucky and the pack has 9 falafel in it!
  • Each pack of flatbreads contains 6 flatbreads and costs £1.
  • Each pot of houmous contains 4 servings and costs £1.10.
  • Each head of lettuce provides 7 servings and costs 46p (£0.46).
  • Houmous and flatbread both go off over the weekend/I eat them so have to be bought fresh on Monday.

The Input

You will recieve two integers as input. These can be read from STDIN, passed as individual arguments, or passed as an array. Up to you.

The first integer represents the starting day e.g. 1=Monday, 2=Tuesday etc. This will always be between 1 and 5 inclusive.

The second integer is the number of days to budget for not including weekends e.g. an input of 1 and 5 would be budgeting my lunch for each day of the standard working week.

Sample program

Below is a throroughly ungolfed program to use as reference and clarification of the above rules.

public static double budgetMyLunch(int startDay, int days){
    double totalCost = 0;

    final double falafelCost = 1.5;
    final int falafelsInPack = 8;
    int falafels = 0;
    int falafelPackCount = 0;

    final double flatbreadCost = 1;
    final double flatbreadsInPack = 6;
    int flatbreads = 0;

    final double houmousCost = 1.1;
    final int houmousServings = 4;
    int houmous = 0;

    final double lettuceCost = 0.46;
    final int lettuceServings = 7;
    int lettuce = 0;

    int endDay = startDay + days;
    int currentDay = startDay;

    while(currentDay<endDay){

        // If there are less than 3 falafels I have to buy some more
        if(falafels<3){
            falafelPackCount++;
            falafels += falafelsInPack;
            // Every third pack of falafel I get lucky and it has 9 instead of 8!
            if(falafelPackCount%3==0) falafels++;
            totalCost += falafelCost;
        }

        // If there are less than 2 flatbreads I have to buy some more
        if(flatbreads<2){
            flatbreads += flatbreadsInPack;
            totalCost += flatbreadCost;
        }

        // If there are no servings of houmous left I have to buy some more
        if(houmous == 0){
            houmous += houmousServings;
            totalCost += houmousCost;
        }

        // If there is no lettuce left I have to buy some more
        if(lettuce == 0){
            lettuce += lettuceServings;
            totalCost += lettuceCost;
        }

        // Use up the ingredients for my lunch!
        falafels -= 3;
        flatbreads -= 2;
        houmous -= 1;
        lettuce -= 1;

        // If it's the end of the week, I eat the remaining
        // houmous and flatbread over the weekend
        if(currentDay%5==0){
            houmous = 0;
            flatbreads = 0;
        }

        currentDay++;
    }
    return totalCost;
}

Questions for sandbox

  • Any suggested tags other than ?
  • Is the question of appropriate complexity to be an interesting challenge? Should I add more rules?
  • Is the sample program required or are the rules clear enough on their own? If it is required should it be included in the question (as above) or linked through to somewhere like Pastebin?
\$\endgroup\$
0
\$\begingroup\$

UTF-8 repair

UTF-8 is the standard by which most of the world operates. Software that was intended to take in other encodings have been modified or wrapped to use UTF-8 as input and output, some with bugs and/or sloppy adherence to the standard. Even rock-solid software with years-old implementations of UTF-8, such as Java, can contain numerous UTF-8 implementation errors.

The challenge

Given a string of characters as input, apply a list of transformations to it. The transformations can be applied in any order, but should have the same result as if the transformations were applied in the listed order.

  • Replace overlong sequences with their equivalent minimal-length encodings.
  • If a byte taking the form 0b11111xxx occurs, replace it, and up to three trailing bytes of the form 0b10xxxxxx, with a single replacement character (\uFFFD).
  • Replace any run of extraneous bytes taking the form 0b10xxxxxx with a single replacement character.
  • If a byte of the form 0b11xxxxxx is followed by an insufficient number of bytes of the form 0b10xxxxxx (either because of a byte of the borm 0b11xxxxxx or the end of the file/string), replace it and any trailing 0b10xxxxxx bytes with a single replacement character.
  • Convert a high surrogate character followed by a low surrogate character to the utf-8 encoding of the supplemental plane codepoint it represents.
  • Replace extraneous surrogate characters with the replacement character.
  • Remove the initial byte order mark (\uFEFF), if one occurs at the start of the string.
  • Keep all other characters intact. Make particular care to make sure that null characters are handled correctly.

The following are errors:

  • An inverted byte order mark (\uFFFE) occurs at the start of a string.
  • The transformed string consists of more than 16 codepoints, and more than 1/8 of them correspond to bad byte sequences.
  • The input string consists of more than 32 bytes, and more than 1/8 of them do not correspond to a valid character, an overlong character, or a surrogate character.

If an error occurs, use an error indication mechanism (return a null pointer, utilize a tagged union indicating an error condition, set an global error variable, throw an exception, raise a signal, whatever), and do not output anything other than an optional error message. Otherwise, print the whole transformed string.

Standard loopholes apply. As with all code golf challenges, shortest submission wins.

Test cases:

To be added if this submission gains traction.

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

Reverse a regex

The .NET regex engine has the ability to process a regex in right-to-left order. There are some subtle differences between right-to-left and left-to-right order, so for the purposes of this challenge, right-to-left order is equivalent to running a reversed regex on a reversed string.

But how do you reverse a regex? Aha, that's where you come in. You need to write a program or function that reads a regex and writes one that will match reversed strings.

Fortunately reversing regexes is quite simple: break them down into symbols and concatenate them in reverse order. The symbols you should support are as follows:

  • Unquoted nonmagic characters
  • Quoted characters
  • Character classes (anything from [ to an unquoted ])
  • Symbols with repetition suffixes (assume that any of +*? or {...} is a valid repetition suffix)
  • Parenthesised regexes (the inner regex will itself need to be reversed)

So for instance the reverse of a{2,}(\*[b-g])+ is ([b-g]\*)+a{2,}.

TODO: More examples, rules, loopholes.

Should I add lookaheads/behinds to the list or is that too complex?

\$\endgroup\$
  • \$\begingroup\$ Character classes and repetition suffixes, at the very least, need more detail. Obviously some advanced repetition suffixes simply can't work, but which ones should be implemented? \$\endgroup\$ – Peter Taylor Nov 3 '17 at 11:16
  • \$\begingroup\$ @PeterTaylor I don't understand why they can't work. You'll be able to assume that the input is a valid regex, so you'll be able to treat a+? as the symbol a+ with a suffix of ?. \$\endgroup\$ – Neil Nov 3 '17 at 13:42
  • \$\begingroup\$ I had possessive quantifiers particularly in mind. I do retract the "obviously": now that I'm trying to think of an explicit example, it's not easy. But I'm still confident that one can be constructed. \$\endgroup\$ – Peter Taylor Nov 3 '17 at 18:26
0
\$\begingroup\$

Find local Minimum

META: This is just meant as an introductory challenge for functional input (black box functions) and hopefully establish some more inputs.

Given a real number e > 0 and some black box function f: (0,1) → (-10,10) ⊆ ℝ, return a value x that is within e of a local minimum x* that means x ∊ [x* - e, x* + e].

Details

  • A value x* is local minimum of f if and only if there is some a > 0 such that f(x*) < f(x) for all x ∊ (x* - a, x* + a) \ {x*}. This means all other points in some neighbourhood must have a strictly greater function value. (This definition is just for this challenge and might be different from other definitions.)
  • The input function f can assumed to be differentiable and satisfy f'(0) < 0 and f'(1) > 0 which means there are no local minima at 0 and 1.
  • You can assume that |f'(x)| < 1000 this means the function cannot be to steep.
  • You can use your native floating point numbers and assume e is sufficiently great. (That means greater than the machine precision of your floating point type.)
  • You can use any language for which there are defaults for black box functions input in the standard IO meta post. If there are no such default for your language feel free to add one in the sense of the definition of black box functions, and make sure to link your proposals in that definition. Also don't forget to vote on them.

Examples

x*                 f(x)
0.5                x*(x-1)
0.5                (x+1/2)^(2*k-1) * (x-3/2)^(2*k-1) for k=1,2,...,1000 
2*(k+1/4)/(2*n-1)  -sin(pi*(2*n-1)) for n=1,2,3,...,159 (for every applicable k there is one minimum)
\$\endgroup\$
  • \$\begingroup\$ FWIW there was a black-box function question a long time ago: codegolf.stackexchange.com/q/3839/194 . On a separate issue, being differentiable is quite a weak condition: is it strong enough to make this answerable? I don't know the whole zoo of nasty counterexamples in analysis, but ISTM that to have a local minimum you need a second derivative, and to solve for a black box you probably want at least the second derivative to be continuous. \$\endgroup\$ – Peter Taylor Nov 6 '17 at 14:47
  • \$\begingroup\$ Thank you for the feedback. You're right, right now it is not answerable, I found an counterexample, and also with requiring second derivatives we can solve it as a black box function. \$\endgroup\$ – flawr Nov 6 '17 at 20:13
0
\$\begingroup\$

I asked this question in main site. Got a very bad review. So, I would be glad if any kind soul here would like to help me make this question better. And Some feedback on how can i make it good.

Given any input, you need to encode / decode it in or from base 16, 32, 64.

So your task will be to make a base 16, 32, 64 encoder / decoder.

RULES:
Standard Loopholes apply.
and that's all
INPUT:
In any format you like.
The inputs will be the 
i. Data
ii. Task (encoding or decoding) (0 or 1)
iii. Base (16 or 32 or 64)

Output:
The Encoded/Decoded data

The shortest code in byte wins.

Reference : RFC

\$\endgroup\$
  • \$\begingroup\$ Just as a starter, I would remove the "It should not be a builtin" (see this) Secondly, rather than link to a website with a description of what you mean, include that description in your question. Finally, allow function answers, rather than restricting to a full program. \$\endgroup\$ – caird coinheringaahing Nov 5 '17 at 16:10
  • \$\begingroup\$ @cairdcoinheringaahing thanks. I will add those changes \$\endgroup\$ – Kishan Kumar Nov 6 '17 at 2:36
0
\$\begingroup\$

The Guardian of the Chessboard

Given a collection of chess squares1, output the chess piece with the smallest value, together with its position, that is able to reach all the given squares in a single step.

1 - A chess square is a notation of a position on an 8x8 grid, with the x-axis being labeled with letters instead of numbers, meaning for example that the notation of 3|2 would be c2.

Input

Input must be received as a collection of strings, each string representing a chess square. You may assume that the chess square will always be in the range a1 - h8.

Example Input: [ "b7", "c4", "h1", "g8" ]

Output

Output must be in the format [piece][square], with piece being the notation of the chess piece, such as N, Q or K, and square being the notation of the square that the chess piece has to be located at.

You may either return a string from a method or directly output the result to stdout.

Rules

  • Note that you have to use the chess piece with the least possible value, so if there is a choice between for example Queen and Bishop, you would choose the Bishop. See below for a table noting the piece values.
  • Special moves such as pawn's first move, en passent and castling do not have to be respected.
  • This is , shortest code in bytes, in any programming language wins.
  • Standard loopholes are forbidden.

Data Table

Here you can look up each pieces value and its notation character.

|  Piece | Value | Character |
|:------:|:-----:|:---------:|
| Pawn   | 1     | P         |
| King   | 2     | K         |
| Knight | 3     | N         |
| Bishop | 3     | B         |
| Rook   | 5     | R         |
| Queen  | 9     | Q         |

Test Cases

Input -> Output

[ "b7", "c4", "h1", "g8" ] -> Bd5

(TODO: Add more testcases)


Sandboxing

  • Duplicates?
  • Possible misunderstatings?
  • Task changes?
\$\endgroup\$
  • \$\begingroup\$ Reach in exactly 1 step? Is 0 step allowed? What about multiple steps? \$\endgroup\$ – user202729 Nov 6 '17 at 1:23
  • \$\begingroup\$ @user202729 Thanks, clarified. \$\endgroup\$ – Ian H. Nov 6 '17 at 8:55
  • \$\begingroup\$ Needs a mention of special cases (pawn's first move, en passant, castling): should we assume that none of them are available? \$\endgroup\$ – Peter Taylor Nov 6 '17 at 14:35
  • \$\begingroup\$ @PeterTaylor That's correct, I added it to the rules section, thanks! \$\endgroup\$ – Ian H. Nov 6 '17 at 16:27
0
\$\begingroup\$

Ternary Parity of Substrings

Definition

The ternary parity of a string is the number of 1's in its ascii bitstring mod 3. For instance, the ascii values for "Hello World!" are:

H:72 e:101 l:108 l:108 o:111 space:32 W:87 o:111 r:114 l:108 d:100 !:33

Converting each ascii value to binary gives:

H:1001000 e:1100101 l:1101100 l:1101100 o:1101111 space:100000 W:1010111 o:1101111 r:1110010 l:1101100 d:1100100 !:100001

Concatenating these together gives the combined bitstring:

1001000110010111011001101100110111110000010101111101111111001011011001100100100001

Which has 45 1's. As a result, the ternary parity of "Hello World!" is 45%3 = 0.

Challenge

Write the shortest program in the language of your choice that does the following:

  • Takes a string, s, as input.
  • Finds S, the collection of all substrings of s
  • Calculates the ternary parity of each element of S
  • Creates a ternary string, q, by concatenating the parity bits of each element in S
  • Outputs the ternary parity of q. That is, the number of 1's in q mod 3.

Input/Output

Input and output may use any of the standard methods listed here. The program must output three distinct values that indicate ternary parity. For instance, the program could print "one", "two", or "three", it could exit with an error code of 0, 1, or 2, or could be a function that returns False for 1 and Null for 2, and 100 for 0, etc.

Test Cases

"Hello World!" => 0
"foobar" => 2
"ABCDEFG" => 1
"abcdefg" => 0
"One" => 2
"Four" => 0
"2049" => 1
\$\endgroup\$
  • 2
    \$\begingroup\$ One element of a good question is a clear motivation. This looks like a random mishmash of operations. Why should anyone care about the result of this calculation? \$\endgroup\$ – Peter Taylor Nov 7 '17 at 10:14
0
\$\begingroup\$

Output an Anagram! No Not That One!

Given a list of unique strings that are anagrams of each other, output an anagram of those words that is different from each word in the list.

The strings will be alphanumeric, and there is guaranteed to be a valid anagram.

The program or function can, but doesn't have to be non-deterministic, meaning given the same input, multiple running a of the code can yield different outputs, as long as every possible output is a valid one.

Test Cases

[Input] -> Possible output
-----------------
[ab] -> ba
[aba, aab] -> baa
[123, 132, 231, 312, 321] -> 213
[hq999, 9h9q9, 9qh99] -> 999hq
[abcde123, ab3e1cd2, 321edbac, bcda1e23] -> ba213ecd

Sandbox questions

  • Is this a duplicate of anything?
  • Any other test cases I should include?
\$\endgroup\$
  • 1
    \$\begingroup\$ I should probably post my other sandboxed challenge at some point... \$\endgroup\$ – MildlyMilquetoast Sep 27 '17 at 1:23
  • 1
    \$\begingroup\$ Should it output the same string each time given the same array of strings as input? \$\endgroup\$ – Shaggy Sep 27 '17 at 10:17
  • \$\begingroup\$ What do you mean by "unique" in the first sentence? \$\endgroup\$ – Peter Taylor Sep 27 '17 at 19:43
  • \$\begingroup\$ @PeterTaylor Did that clear it up? \$\endgroup\$ – MildlyMilquetoast Sep 27 '17 at 20:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .