525
\$\begingroup\$

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

Sandbox FAQ

Posting

To post to the sandbox, scroll to the bottom of this page 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, though you can optionally add a title at the top. 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, and replace the post here with a link to the challenge and delete the sandbox post.

Discussion

The purpose of the sandbox is to give and receive feedback on posts. If you want to, feel free to give feedback to any posts you see here. Important things to comment about can include:

  • Parts of the challenge you found unclear
  • Comments addressing specific points mentioned in the proposal
  • Problems that could make the challenge uninteresting or unfit for the site

You don't need any qualifications to review sandbox posts. The target audience of most of these challenges is code golfers like you, so anything you find unclear will probably be unclear to others.

If you think one of your posts needs more feedback, but it's been ignored, you can ask for feedback in The Nineteenth Byte. It's not only allowed, but highly recommended!

It is recommended to leave your posts in the sandbox for at least several days, and until it receives upvotes and any feedback has been addressed.

Other

Search the sandbox / Browse your pending proposals

The sandbox works best if you sort posts by active.

To add an inline tag to a proposal use shortcut link syntax with a prefix: [tag:king-of-the-hill]. To search for posts with a certain tag, include the name in quotes: "king-of-the-hill".

Get the Sandbox Viewer to view the sandbox more easily!

\$\endgroup\$
0

3362 Answers 3362

1
26 27
28
29 30
113
2
\$\begingroup\$

Output all of printable ASCII using all of printable ASCII

Posted

\$\endgroup\$
8
  • \$\begingroup\$ "Irreducible" isn't really an observable requirement; I'd recommend looking into using pristine-programming to make it an objective criterion. \$\endgroup\$ – hyper-neutrino Oct 12 '20 at 18:31
  • 1
    \$\begingroup\$ What do you mean by "observable"? "irreducible" simply means you can't purely remove characters (not purely substrings) from the program and have it still work (not merely not error). That's pretty objective, is it not? \$\endgroup\$ – pxeger Oct 12 '20 at 18:39
  • \$\begingroup\$ Actually, yes it seems you're right, I was probably thinking of some other common criteria that isn't valid. Otherwise challenge looks good, doesn't seem to be a duplicate. I would say this isn't kolmogorov complexity since it's not constant but it is restricted source albeit not in the common usage. \$\endgroup\$ – hyper-neutrino Oct 12 '20 at 18:48
  • \$\begingroup\$ Can my program contain additional non-ASCII bytes? \$\endgroup\$ – Adám Oct 12 '20 at 19:00
  • \$\begingroup\$ @Adám yes, in the post it says "Your program, and its output, can contain any additional non-printable-ASCII bytes (bytes, not characters) if you like, such as newlines". "non-printable-ASCII" includes "non-ASCII" \$\endgroup\$ – pxeger Oct 12 '20 at 19:01
  • 2
    \$\begingroup\$ Ah, I see. Maybe clarify that you mean both non-[printable-ASCII] and [non-printable]-ASCII. \$\endgroup\$ – Adám Oct 12 '20 at 19:03
  • \$\begingroup\$ Perhaps subtract 95 from each score so that scores look more reasonable \$\endgroup\$ – lyxal Oct 13 '20 at 10:51
  • \$\begingroup\$ @Lyxal my reasoning for not doing that was because I suspect most answers will be quite a lot longer in order to make sure they're irreducible, it would complicate things, and IMO it doesn't really matter if they're that length \$\endgroup\$ – pxeger Oct 13 '20 at 10:55
2
\$\begingroup\$

Count the Collatz survivors mod 2^n

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

Round a Matrix

Your input is a 2d array of nonnegative floats A. It can be supplied in whatever format is most acceptable for your language. It can have any dimensions.

Let r and c be the 1d arrays of row and column sums of A respectively, rounded to the nearest integer, with the rule that 0.5 is rounded up to 1.

Your task is to output a 2d array of nonnegative integers B such that |b_{ij} - a_{ij}| < 1 for all i and j, and also the row and column sums of B are equal to r and c respectively.

In other words, B is obtained by rounding each element of A up or down, in such a way that the row and column sums are preserved.

There may be many possible solutions. In this case, you only need to output one of them.

If there is no solution, your program's behaviour can be undefined.

Example:

 A = 1.2 3.4 2.4
     3.9 4.0 2.1
     7.9 1.6 0.6

in this case, the row sums are [7.0, 10.0, 10.1] and the column sums are [13.0, 9.0, 5.1] so after rounding these, you get r = [7 10 10] and c = [13 9 5]. One acceptable solution is

 B = 1   3   3
     4   4   2
     8   2   0

This is code golf, so the shortest code wins.

Motivation

I am also interested in what clever algorithms people can come up with. I guess the most obvious is just to do a random search, but that can take a very long time, even if the array is only 10x10 or so.

Questions

  • Is it clear? Please can you edit it if it's not in the right format?
  • Has it appeared here before? (I don't think so, because I was searching Stackoverflow for a while in order to come up with a solution to this.)
  • Is there always a solution under the conditions given here?
  • Would it be better in some other format than code golf?
  • Should the condition |b_{ij} - a_{ij}| < 1 be |b_{ij} - a_{ij}| <= 1?
\$\endgroup\$
2
  • 1
    \$\begingroup\$ Since you want optimal, interesting solutions, rank by time complexity. You'll get fewer answers, but they will be more optimal than a direct brute force approach. \$\endgroup\$ – Razetime Oct 22 '20 at 6:53
  • 1
    \$\begingroup\$ The suggestion of using complexity isn't often a good one - most challenges here that try to do that wind up closed or unanswered. It would be much simpler to go by execution time for some number of test cases that you pick. For the actual question, I think you should explicitly say that r and c are computed by summing and then rounding (assuming that is the correct order) as it isn't precisely clear from what you have right now. \$\endgroup\$ – FryAmTheEggman Oct 22 '20 at 20:34
2
\$\begingroup\$

The Fibonacci Rectangular Prism Sequence (posted)

\$\endgroup\$
12
  • 2
    \$\begingroup\$ There are the square roots of A127546. It looks like there are ways to generate this sequence shorter than just generating Fibonacci numbers and adding their squares. So, this doesn't strike me as a duplicate but an interesting challenge in its own right. I'd recommend removing the square-root step from the challenge and just asking for the sum of the three squares, which is a whole number. This might also allow for more interesting recursive solutions. You should include test cases, perhaps something like the first 15 elements of the sequence and maybe one big one. \$\endgroup\$ – xnor Oct 27 '20 at 0:39
  • 1
    \$\begingroup\$ For clarity, I also recommend explicitly giving the formula for the k-th term in terms of the respective Fibonacci numbers, so that solvers don't need to know the Pythagorean formula for the diagonal of a prism. And, just in case, give the recursive formula for the i'th Fibonacci numbers. Mathjax is enabled here, but you have to use \$ delimiters in place of $. \$\endgroup\$ – xnor Oct 27 '20 at 0:45
  • \$\begingroup\$ @xnor Just throwing in an equation seems odd for a code golf challenge. Do you have any ideas for context? Or is that okay here? (I guess I could always just write that you have to square it after...) \$\endgroup\$ – nthnchu Oct 27 '20 at 1:18
  • \$\begingroup\$ Not quite sure what you mean here. I do think it would be good to keep the Fibonacci prism context as some motivation and flavor. I'm not suggesting removing that, but adding a formula like \$g(n)=F_n^2 + F_{n+1}^2 + F_{n+2}^2\$ (or with a square root if you want to keep that) and the definition of Fibonacci numbers \$F_n\$. I can say there's a preference here for challenges to have the task easy to read by skimming. And, to give a formula if possible and save solvers a bit of a time from doing math problem, although clever golfers may find shorter alternative ways to express or compute it. \$\endgroup\$ – xnor Oct 27 '20 at 2:32
  • \$\begingroup\$ I've edited the question. Is that what you wanted @xnor? \$\endgroup\$ – nthnchu Oct 27 '20 at 13:08
  • 2
    \$\begingroup\$ Yes, this looks good. You should still add test cases. I'd suggest also linking oeis.org/A127546. \$\endgroup\$ – xnor Oct 28 '20 at 4:12
  • 1
    \$\begingroup\$ I think the first test case ought to be 1 ==> 6 \$\endgroup\$ – Giuseppe Oct 28 '20 at 21:15
  • \$\begingroup\$ @Giuseppe Yeah, you're right. Thanks for the correction! \$\endgroup\$ – nthnchu Oct 28 '20 at 22:12
  • \$\begingroup\$ I made some clean-up edits, in part to avoid references to programs and functions, since either is allowed by allowed. \$\endgroup\$ – xnor Oct 29 '20 at 0:38
  • \$\begingroup\$ @xnor Thank you! When should I post this (out of the sandbox)? (I'm new :D) \$\endgroup\$ – nthnchu Oct 29 '20 at 22:18
  • \$\begingroup\$ @nthnchu The usual recommendation is 3 days minimum, but it's really up to you. I just read through it again, and I think it all looks good. One minor thing is that we allow zero-indexing for sequence challenges by default, which would allow doing the mapping as 0 ==> 6, 1 ==> 14, .... So I think it would be good to say that input may be taken zero-indexed to remind solvers of this. \$\endgroup\$ – xnor Oct 29 '20 at 22:43
  • \$\begingroup\$ @xnor I choose the 1 index off of \${F_1}^2+{F_{1+1}}^2+{F_{1+2}}^2 = 6\$. 0 would therefore be \${F_0}^2+{F_{0+1}}^2+{F_{0+2}}^2 = 2\$. The index is based off of \$F_0=0\$ and \$F_1=1\$ \$\endgroup\$ – nthnchu Oct 29 '20 at 23:08
2
\$\begingroup\$

I only want some primes, not all of them

It is well known that there are various formulae for calculating primes that span from calculating a subset of primes, to all possible primes. However, for this challenge, I only want a specific subset.

You are to write a program which takes a single natural integer \$n>0\$ as input. This program will then output a function, \$f(p)\$, which will take a integer \$p\ge0\$ and do the following:

  • If \$p < n\$, return the \$p\$th value of a contiguous subset length \$n\$ of primes
  • If \$p \ge n\$, returns a non-prime integer (including \$0\$, \$1\$ and negative integers).

For example, Euler's quadratic \$p^2+p+41\$ returns the \$p\$th value of the subset of primes \$\{41, 43, 47, ..., 1601\}\$ for \$0 \le p \le 39\$. However, for \$p=43\$, this returns \$1933\$, which is prime, so this would not be a valid function to return for \$n = 40\$.

You may choose the subset (and it may differ for different \$n\$), so long as it is finite and contiguous. You may also choose to use 1-indexing for \$p\$, meaning that \$f(p)\$ returns primes for \$1 \le p \le n\$.

You may output in the most natural form of a function in your language. For example, Jelly would return a string representing a link, Python would return a named function or lambda etc.

This is so the shortest code in bytes wins.


Meta

\$\endgroup\$
4
  • 3
    \$\begingroup\$ 1. Why output a function and not just have a program with two inputs? 2. Maybe you should note that 0, 1, and negative numbers are not prime. 3. I also think you should clarify that "length n" refers to the subset, not its elements. That intially confused me for a while. 4. What if \$p\$ or \$n\$ is negative? Or zero? - is the "\$p\$th value" using a 0-based index? \$\endgroup\$ – pxeger Nov 3 '20 at 20:20
  • 1
    \$\begingroup\$ @pxeger 1. the idea of the challenge is based on prime calculating formulae, so I want submissions to return "a formula" for a given \$n\$, rather than just a single value for two values \$n\$ and \$p\$. Whether the "formula" is a mathematical one or just "if \$p<n\$ then ... else ..." is irrelevant. 2, 3, 4. All clarified \$\endgroup\$ – caird coinheringaahing Nov 3 '20 at 20:26
  • \$\begingroup\$ "a natural integer \$p \ge 0\$" - zero isn't technically a natural number. Personally I think you should just drop the "natural" because an inequality is clearer. \$\endgroup\$ – pxeger Nov 3 '20 at 20:29
  • 1
    \$\begingroup\$ @pxeger There's some disagreement about whether \$0\$ is natural or not (something I've had to deal with in past challenges), but I agree, the inequality + just "integer" is much clearer \$\endgroup\$ – caird coinheringaahing Nov 3 '20 at 20:30
2
\$\begingroup\$

Question has been posted

\$\endgroup\$
1
  • \$\begingroup\$ Seems to be a heavy dictionary-ing challenge that might not make it suitable, but otherwise cool idea. \$\endgroup\$ – Beefster Nov 9 '20 at 20:16
2
\$\begingroup\$

Middle-Square RNG: What Number Came Before? (WIP)

A well-known, but statistically poor, way of generating random numbers is to square the number and take the middle digits (when expressed in base 10)

Your task is to take a 4-digit number as input and output any 4-digit number that produces the input number (there may be more than one, which is one of the statistical flaws of this method) when applying middle-square. If the square has an odd number of digits, take an extra digit off the left side.

If there is no such number (some numbers with this method have no predecessor- yet another statistical flaw), indicate that clearly in a way that cannot be mistaken as a valid answer. Some possible ways of indicating this:

  • Output nothing
  • Output null/None/nil/false
  • Output an empty list
  • Output a negative number
  • Output an error message that is clearly not a 4-digit number
  • Throw an exception
  • Crash
  • Exit with a nonzero status

\$\endgroup\$
2
  • \$\begingroup\$ Is there a theoretical guarantee that any number if attainable? (i.e. is there always a solution?) \$\endgroup\$ – Robin Ryder Nov 23 '20 at 8:21
  • \$\begingroup\$ @RobinRyder no. Some numbers have no predecessor. \$\endgroup\$ – Beefster Nov 30 '20 at 21:11
2
\$\begingroup\$

Operational countdown

  • Posted.
\$\endgroup\$
2
  • \$\begingroup\$ How to handle floating point imprecision in this given that your doing floating point division and roots then checking to see if those are integers? I cooked up a solution in Perl that is off by 1 on several of your examples because as it gets near 1, the subtraction ends in .999999...... \$\endgroup\$ – Xcali Dec 3 '20 at 4:15
  • \$\begingroup\$ @Xcali it's a trivial part of the challenge, this kind of problem is common to many languages, anyway I think that Perl, like most of languages, can handle integer numbers properly. \$\endgroup\$ – AZTECCO Dec 3 '20 at 5:11
2
\$\begingroup\$

A Snake, A Camel And A Kebab.

As many of you will know, almost every programming language has a standard casing system; unfortunately, we have not been able to agree on a singular system to use and now must frequently switch between camelCase, snake_case and kebab-case.

Now I know what you're thinking... wouldn't it be nice if we had a program that could convert from one casing to another?
Well - soon we're going to have plenty!!! (This is where you come in)

Challenge

You're job is to write a program/function that will take an input string, and a casing system. It will then print/return the converted string.

Inputs:

You're program will receive two inputs, an alphabetic string that is to be converted and a string that will always be one of kebab camel or snake.

Outputs:

You're program should output a string that conforms to the new casing if it is possible. If the input string was invalid, and had mixed casing, you're program should print/do nothing.

Test Cases:

Valid Examples:
"aJavaVariable", "snake" = "a_java_variable"
"a_python_variable", "kebab" = "a-python-variable"
"golf", "camel" = "golf"
"", "snake" = ""
"doHTMLRequest", "kebab" = "do-h-t-m-l-request"

Invalid Examples (no output):
"an_InvalidName", "kebab"
"invalid-inPut_bad", "camel"

Additional Info:

  • As most programming languages prefer lowercase variable names, you should convert all letters to lowercase unless it is needed to be upper case for camel casing.

Meta

  • Is this a duplicate? I couldn't find any quite like it.
  • Are the rules clear?
  • Would it lead to more creative answers if I remove the possibility of being given invalid input, and assume all input will be valid?
\$\endgroup\$
4
  • 3
    \$\begingroup\$ I think you should remove the invalid input handling, as it might only increase the code length.. \$\endgroup\$ – vrintle Dec 14 '20 at 3:41
  • \$\begingroup\$ Very very similar to this,, except there's an extra casing requirement. \$\endgroup\$ – Razetime Dec 14 '20 at 3:45
  • 1
    \$\begingroup\$ @Razetime Good find. I think that although the premise of the question is very similar, the difference in triggering which case to convert to, will lead to very different code logic. \$\endgroup\$ – Scott Dec 14 '20 at 20:23
  • \$\begingroup\$ Suggested expansion: PascalCase \$\endgroup\$ – Beefster Dec 14 '20 at 23:47
2
\$\begingroup\$

How Many Atoms?

Post

\$\endgroup\$
3
  • 1
    \$\begingroup\$ So we don't need to handle (Ne(St(Ed_2)_3)_4)_5 formulas? \$\endgroup\$ – Bubbler Dec 17 '20 at 7:26
  • \$\begingroup\$ @Bubbler adding that in as a test case \$\endgroup\$ – bigyihsuan Dec 17 '20 at 16:01
  • \$\begingroup\$ Looks like your test cases have some typos. H_20 should have an answer of 20, or the 0 should be an O. Also, the third to last has an _ after a number (C_21_H...), which doesn't seem right. In general, though, if the goal here is just to count the atoms, and not to check the validity of a formula, I find that the BNF and the list of elements is unnecessary and confusing to the task at hand. It seems like the challenge is going to be about validating a formula and then it becomes something completely different. \$\endgroup\$ – Xcali Dec 18 '20 at 18:44
2
\$\begingroup\$

Based Palindromes

\$\endgroup\$
6
  • \$\begingroup\$ “All integer base 10 numbers below 1000” would include negative numbers. Based on your test cases, you should clarify that you mean non-negative or positive numbers. Also, wouldn’t 0 be a palindrome in any base? Why is it excluded from the base 2 test case? \$\endgroup\$ – water_ghosts Dec 24 '20 at 23:22
  • \$\begingroup\$ @water_ghosts alright, i've edited the problem to show that it's only from 0-1000 inclusive, as well as added 0 to the output for base 2. \$\endgroup\$ – Gio D Dec 25 '20 at 0:04
  • \$\begingroup\$ This title is a downgrade from "Based Palindromes" \$\endgroup\$ – Razetime Dec 25 '20 at 3:15
  • 1
    \$\begingroup\$ @Razetime haha, i didn't know whether "based palindromes" made it clear what the challenge was and so i changed it. I've changed it back, though. \$\endgroup\$ – Gio D Dec 25 '20 at 3:31
  • \$\begingroup\$ Related. This is a simpler challenge than most of the other challenges that ask for palindromes in multiple bases, so I think it's fine. \$\endgroup\$ – Razetime Dec 25 '20 at 3:47
  • \$\begingroup\$ Now that this has been posted, I've edited it down to save space \$\endgroup\$ – caird coinheringaahing Dec 27 '20 at 22:12
2
\$\begingroup\$

Partial sums of the kempner series

Posted

\$\endgroup\$
2
  • \$\begingroup\$ Can we output rational numbers (or numerator/denominator pairs) instead of floats? \$\endgroup\$ – Dingus Dec 31 '20 at 13:41
  • \$\begingroup\$ @Dingus , yes according to the Default I/O methods. Do you think I should specify this in the challenge? \$\endgroup\$ – Command Master Dec 31 '20 at 14:14
2
\$\begingroup\$

Eye test - How many squares are in this picture?

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

Run the lottery

Rules

Your job is to write a program to accept lottery tickets, adding all the money to a pool, and divvy out the winnings based on how many numbers each ticket has guessed correctly. The amount of money people spent on their tickets is used to determine how much each person should take home.

  1. You will receive a list of lottery tickets, which will be how much the person has paid, along with 5 numbers between 1 and 25. The numbers do not have to be unique, and order matters. [1, 2, 3, 4, 5] and [3, 2, 1, 4, 5] are considered different, and [1, 1, 1, 1, 1] is a valid ticket.
  2. You will also receive 5 numbers between 1 and 25, which are the winning numbers. This follows the same restrictions as a participant's ticket.
  3. Each participant will be given a "score" based on how many numbers they guessed correctly. They must guess the number, and guess it in the correct spot as well. [x, x, 1, x, x] is not a winning number for [1, 2, 3, 4, 5]. [1, 1, 1, 2, 3] counts as 2 correct guesses for [1, 2, 1, 1, 1].
  4. The score is \$4^n\$ where \$n\$ is the number of winning numbers. Yes, a participant with 0 correct numbers has a score of 1, and is eligible to take home some money.
  5. Each participant's final weight is their score times the amount they spent on the ticket. A person with a score of 4 (1 correct guess) and paid $4 for a ticket has the same weight as a person with a score of 16 (2 correct guesses) and paid $1 for their ticket.
  6. Finally, the prize pool is then divvied up. 10% goes to you, the lottery company. The remaining 90% gets divvied up proportionally by each participant's final weight, rounded to the cent.

The input and output of the program can be in any format. The only stipulation is that monetary values must be decimals. For instance, $15.68 cannot be represented as 1568.

Example game

The winning numbers are as follows

  • [2, 18, 1, 15, 7]

Four people bought tickets with the following prices and numbers

  • $6, [9, 5, 6, 15, 22], one match, score of 4, weight of 24
  • $2, [2, 25, 17, 7, 7], two matches, score of 16, weight of 32. Notice how only the second 7 counts, order matters
  • $67, [11, 16, 9, 20, 16], no matches, score of 1, weight of 67
  • $1, [12, 19, 6, 25, 2], no matches because the 2 is in the wrong spot, score of 1, weight of 1

The total pool is $76, $68.4 after we take our cut, which is then sent out based on the weights. The sum of all weights is 124.

  • First ticket gets 24/124, $13.24
  • Second ticket gets 32/124, $17.65
  • Third ticket gets 67/124, $36.96
  • Fourth ticket gets 1/124, a whole 55 cents
\$\endgroup\$
3
  • \$\begingroup\$ I think you should explain that the winning numbers are not necessarily distinct in rule 2, instead of leaving it until the examples. Likewise, you should state the 'order matters' rule earlier. \$\endgroup\$ – Dingus Jan 12 at 11:57
  • 1
    \$\begingroup\$ @Dingus I added those clarifications to rules 1-3. Thoughts? \$\endgroup\$ – Daffy Jan 15 at 23:46
  • \$\begingroup\$ Looks good to me. \$\endgroup\$ – Dingus Jan 16 at 5:02
2
\$\begingroup\$

Is each bracket matched?

Given a string consisting only of the characters ()[]{}, determine if each type of bracket is matched--that is, every ( corresponds to one later ), every [ corresponds to one later ], and every { corresponds to one later } (and vice-versa).

Pairs are allowed to overlap: ([)] is just as valid as ([]).

Output one consistent value for one classification and anything else for the other, or following your language's truthiness semantics (inverted if you want).

Test cases:

Matched:

()
[]
{}
()[]{}
()()([])
{[][}]
{{{}}}
([{}]){([]})
[(()())(((())))(]()(()))

Not matched:

(
]
{{}
[)
(()())((((()))))(()()(())(())))
{}{}{)
[())[])]
)(

Meta

  • Does this admit a variety of interesting solutions?
  • Would it be better to add <> as a bracket type? Have fewer bracket types? Arbitrarily many?
  • I'm writing this up entirely because I'm surprised it hasn't been asked yet, so although I have looked, this might still be a duplicate.
  • Although I don't think it's necessarily unclear, I feel like the specification could be worded better.
\$\endgroup\$
2
2
\$\begingroup\$

Is this a valid Irish word?

In Irish, most consonants are divided into broad (velarized) and slender (palatalized) variants, and the orthography marks them with neighboring vowels, which are similarly divided. This gives rise to the caol le caol agus leathan le leathan (slender with slender and broad with broad) rule – a medial sequence of consonants must have the same class of vowel on either side: in leabhar, bh is surrounded by two broad vowels, so it is broad as well, and in cailín, l is surrounded by two slender vowels, so it is slender. a, o and u are broad and e and i are slender (similar with the vowels with the fada: á ó ú é í); ae is also considered broad.

Given a word, output whether it follows this rule.

Input

You may assume that the input has only the following characters with their uppercase variants:

aábcdeéfghiílmnoóprstuú
AÁBCDEÉFGHIÍLMNOÓPRSTUÚ

Tests

Valid:

deartháireacha
madra
nuachtán
gaolta
ceannasaithe
snámhann
fómhair
laethanta
béar
Bealtaine
hAoine
ball
tree
ggg

Invalid:

codegolf
delta
alishanoi
ABI
anseo
breithlá

(Note that anseo and breithlá are Irish words, but they happen not to follow this rule. You should still output a falsy answer for them for the sake of simplicity.)

\$\endgroup\$
10
  • 1
    \$\begingroup\$ Jebus, I haven't heard "slender with slender and broad with broad" in a couple of decades, that gave me a flashback! You note that "anseo" ("here", for the benefit of the non-Gaeilgeoirí) doesn't follow the rule but you should probably specify the expected output for it - I'd suggest against special-casing it and having it be invalid. \$\endgroup\$ – Shaggy Jun 2 '19 at 19:51
  • 2
    \$\begingroup\$ This needs a much better definition of what is a broad consonant versus what is a slender consonant, unless I'm not understanding the challenge. \$\endgroup\$ – AdmBorkBork Jun 3 '19 at 12:56
  • \$\begingroup\$ @AdmBorkBork as I understood it, broad and slender consonants are indistinguishable in writing, the point is to detect consonants that would have to be both at the same time. \$\endgroup\$ – FrownyFrog Jun 13 '19 at 4:49
  • \$\begingroup\$ I'd suggest listing their uppercase variants \$\endgroup\$ – l4m2 Jun 25 '19 at 15:52
  • \$\begingroup\$ 'in leabhar, bh is surrounded by two broad consonants, so it is broad as well, and in cailín, l is surrounded by two slender consonants'. Did you mean 'vowels' instead of 'consonants' here? \$\endgroup\$ – Dingus Feb 8 at 5:06
  • \$\begingroup\$ Yes, that should have been 'vowels'. \$\endgroup\$ – bb94 Feb 8 at 19:14
  • 1
    \$\begingroup\$ I still have no idea what the types of consonants and vowels are. \$\endgroup\$ – user202729 Feb 9 at 2:12
  • 1
    \$\begingroup\$ This looks like a good challenge to me, to make it more understandable I would just explicitly list the sets of broad vowels, slender vowels, and consonants. (Rather than "here are all the characters: aábc..." have "here are all the broad vowels:aAáÁ...", "here are all the slender vowels:...", "here are all the consonants:...") \$\endgroup\$ – Leo Feb 10 at 5:42
  • \$\begingroup\$ Also, you should clarify what should happen if the word does not contain a sequence of consonants surrounded by vowels (e.g. "ball", "thx", "tree") \$\endgroup\$ – Leo Feb 10 at 5:44
  • \$\begingroup\$ "thx" is assumed to never be passed in as input. "ball" and "tree" would return true, because there's no contradiction between broad and slender vowels around consonants that can occur here. \$\endgroup\$ – bb94 Feb 12 at 6:09
2
\$\begingroup\$

Count strictly overlapping substrings

Posted

\$\endgroup\$
4
  • 1
    \$\begingroup\$ Is it correct that 1 is never a valid result? \$\endgroup\$ – Adám Jan 28 at 17:04
  • \$\begingroup\$ @Adám yes; do you think I should add that? \$\endgroup\$ – pxeger Jan 28 at 17:04
  • \$\begingroup\$ Probably a good idea. \$\endgroup\$ – Adám Jan 28 at 17:05
  • \$\begingroup\$ You need test cases with longer bs that can overlap themselves in multiple ways. \$\endgroup\$ – Adám Jan 28 at 17:27
2
\$\begingroup\$

Pad a jagged array to be square

Posted

\$\endgroup\$
11
  • \$\begingroup\$ Add a test case for pad value -1 or something like that. \$\endgroup\$ – user202729 Feb 12 at 14:55
  • \$\begingroup\$ Can any dimension of the input array be 0? [please review other sandbox posts] \$\endgroup\$ – user202729 Feb 12 at 14:56
  • \$\begingroup\$ Also add a test case with an array consisting of only fill values. \$\endgroup\$ – user202729 Feb 12 at 14:58
  • \$\begingroup\$ @user202729 what do you mean by "[please review other sandbox posts]"? I don't see the need for a test case with pad value -1, because the type of the elements in the array is answer-defined. I'll clarify the other two though \$\endgroup\$ – pxeger Feb 12 at 16:22
  • \$\begingroup\$ I suggest that you specify more clearly what input formats are allowed, that is, what counts as an "array". For example, is it acceptable to take lines of text with space as separator within each line? Or use two types of brackets, such as {[1, 5, 3], [4, 5], [1, 2, 2, 5]}? \$\endgroup\$ – Luis Mendo Feb 12 at 18:31
  • \$\begingroup\$ @LuisMendo input should be taken in your language's natural representation of nested arrays. If it doesn't have a builtin array representation, then take it in some kind of text representation like I mentioned in the rules section \$\endgroup\$ – pxeger Feb 12 at 18:49
  • \$\begingroup\$ The problem with saying "natural representation" is that a language may have more than one way of representing nested tuples. That said, I think what you have in the question is alright - perhaps to clarify what Luis is talking about you could add: "input can be any unambiguous representation of a jagged array"? I think what Luis may be getting at is that there could be a problem with e.g. a Python array contains meta-information (the length) while a C array wouldn't, but usually I think that is left out. \$\endgroup\$ – FryAmTheEggman Feb 12 at 19:26
  • \$\begingroup\$ To explain my point better: MATLAB (or MATL) can use curly braces for arbitrary arrays, and square brackets for rectangular arrays. So either {{1, 5, 3}, {4, 5}, {1, 2, 2, 5}} or {[1, 5, 3], [4, 5], [1, 2, 2, 5]} could be used as input. The latter is probably better to reduce code length. Can we just choose the most convenient one? What is the limit where choosing a convenient format counts as "pre-processing" the input and is not allowed? All this is language-dependent, but some general specification would be needed \$\endgroup\$ – Luis Mendo Feb 12 at 19:33
  • \$\begingroup\$ @pxeger Something that I tend to add to my sandbox review comments recently, hoping to reduce the problem of the sandbox posts not being reviewed enough. \$\endgroup\$ – user202729 Feb 13 at 2:37
  • 1
    \$\begingroup\$ @LuisMendo You can probably choose any convenient one (I think that's the common consensus?) \$\endgroup\$ – user202729 Feb 13 at 2:38
  • \$\begingroup\$ The "-1" thing is just to make people notice that the value to be padded is an input rather than hard coded by the code. \$\endgroup\$ – user202729 Feb 13 at 2:46
2
\$\begingroup\$

Snail word

Very similar to other challenges

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

Reconstruct an integer from its prime exponents

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

Draw four colorful quarter circles

The challenge is to reproduce this image in your favorite language:

enter image description here

  • Your image must be at least 400 by 400 pixels.
  • The fill colors don't need to be the same as in the image but they must be different from each other.
  • You must include the outlines but they can be any visible thickness you choose.
  • The quarters should be at the same orientation as in the image.
  • Your image must have four quarter circles aligned as in the image which each touch the edge of the circle at a point.
  • Your code must take input which specifies the location, in pixels, of the point where the quarter-circles meet; you can take this input in any reasonable format, but the units must be pixels (no relative units, such as a fraction of the width/height of the image). You can assume these inputs are always within the bounds of the outer circle. You can also assume that the inputs are such that all four quarter circles can be drawn within the circle.

Here is some LaTeX code as an example:

\documentclass[tikz,margin=3mm]{standalone}
\usetikzlibrary{calc,through}

\usetikzlibrary{intersections}


\begin{document}
\begin{tikzpicture}[inner sep=0pt, outer sep=0pt]

  \coordinate (point) at (-0.1,0.4);

  \draw [name path=mycirc] (0,0) circle [radius=1];
  \path [name path=di-1] (point) -- ++(-2,2);
  \path [name path=di-2] (point) -- ++(-2,-2);
  \path [name path=di-3] (point) -- ++(2,-2);
  \path [name path=di-4] (point) -- ++(2,2);
  
  \foreach \col [count=\i] in {yellow,red,blue,brown}{
  
      \fill [red, name intersections={of=mycirc and di-\i}] (intersection-1) circle [radius=0.05] node (inter-\i) {};
      
      \fill[\col,draw=black,rotate around={(\i+3)*90:(point)}] (point)
        let \p1 = ($(point) - (inter-\i)$) in 
        arc [start angle=0, end angle=90, radius={0.707*veclen(\x1,\y1)}]
        -- +(270:{0.707*veclen(\x1,\y1)}) -- cycle ; 
  }
  
  \fill[red] (point) circle [radius=0.05];
   
\end{tikzpicture}
\end{document} 

[I would love help on how to improve this challenge.]

\$\endgroup\$
7
  • 4
    \$\begingroup\$ Describing the exact ratios of the shapes would be helpful in drawing them \$\endgroup\$ – user Mar 5 at 15:34
  • 2
    \$\begingroup\$ Those are quarter-circles, not semicircles \$\endgroup\$ – pxeger Mar 5 at 15:46
  • \$\begingroup\$ Might be more interesting if the center of the shape (where the petals meet) was an input \$\endgroup\$ – Zaelin Goodman Mar 5 at 15:54
  • \$\begingroup\$ @pxeger ahem.. thanks :) \$\endgroup\$ – Anush Mar 5 at 15:57
  • \$\begingroup\$ @ZaelinGoodman Could you say exactly how that could be specified? \$\endgroup\$ – Anush Mar 5 at 15:59
  • 2
    \$\begingroup\$ @Anush Since the image is 300 x 300 pixels, you could say something like you must take input which specifies the location, in pixels, of the point where the quarter-circles meet; you can take this input in any reasonable format, but the units must be pixels (no relative units, such as a fraction of the width/height of the image). You can assume these inputs are always within the bounds of the outer circle. \$\endgroup\$ – Zaelin Goodman Mar 5 at 16:03
  • 1
    \$\begingroup\$ "Your image must be at least 400 by 400 pixels" what about vector graphics? If some one choice to output the image with vector graphics format. How to define its width and height? \$\endgroup\$ – tsh Mar 9 at 5:51
2
\$\begingroup\$

Gray code... Gray code?

Your Task

Your task is to print (in an easily readable and consistent format) the binary representations of the numbers 0-255 in some order such that only one bit is altered between two consecutive numbers.

Your Restrictions

Each successive byte of the source code after the first can only change one bit from the previous byte.

Other Information

Example valid code (in utf-8): q1!#c. Here, q (01110001) and 1 (00110001) are different in only one bit, and so on

Example invalid codes (in utf-8): Q1!, "!"

Example valid outputs (seperated by an empty line):

10101010 10101011 11101011 ... 01010101

[10, 11, 1011, 1111, 1110, ...]

10
0
1
11
111
...

Example invalid outputs (seperated by an empty line):

0000000100000011000000100000000000000100...

0
01
10
11
100
...

0 1 ... 100000000 110000000 ... 11111111

00 01 11 10 0100 0101 ...

0 1 3 2 5 6 ...

Notes:

  • A character can be stored as two bytes, but the bytes must differ by only one bit
  • If your interpreter ignores a character (like Whitespace ignores almost all characters) it cannot be used
\$\endgroup\$
10
  • \$\begingroup\$ Is printing 1 3 2 6 7 5 4 and onwards ok? \$\endgroup\$ – PkmnQ Feb 28 at 4:36
  • 1
    \$\begingroup\$ What does "some form of gray code" mean exactly? / Clarify that the restriction part applies to the source code of the program. \$\endgroup\$ – user202729 Feb 28 at 6:49
  • 1
    \$\begingroup\$ I'll change it to binary gray code to avoid confusion. \$\endgroup\$ – Hyperbole Feb 28 at 15:55
  • \$\begingroup\$ You should describe what the gray code is to avoid ambiguities. \$\endgroup\$ – FryAmTheEggman Feb 28 at 21:49
  • \$\begingroup\$ Do you think this challenge is too hard? \$\endgroup\$ – Hyperbole Mar 2 at 15:01
  • \$\begingroup\$ Is it okay if the output is printed in decimal instead of binary? \$\endgroup\$ – user202729 Mar 3 at 13:20
  • \$\begingroup\$ Perhaps add "addition of leading zeroes doesn't count as a change" and some examples to illustrate/example valid output (just for challenge accessibility, this is implied from the definition (and the Wikipedia page)) \$\endgroup\$ – user202729 Mar 3 at 13:21
  • 1
    \$\begingroup\$ Would be hard for practical languages, but for everything-are-valid languages it should not be a problem. Good challenge idea. \$\endgroup\$ – user202729 Mar 3 at 13:22
  • \$\begingroup\$ Does the last statement means "Your program should not work by removing any single bytes", or "Any subsequence of your program should not work."? \$\endgroup\$ – tsh Mar 16 at 11:43
  • \$\begingroup\$ @tsh neither. It means that you can't use a character if it is completely skipped over by the interpreter. For example, in the python code "if len('abc') < 4: print('Hello, World')" the "c" can still be used because it is not skipped over by the interpreter. \$\endgroup\$ – Hyperbole Mar 18 at 17:29
2
\$\begingroup\$

Subarrays With At Least N Distinct Integers

\$\endgroup\$
5
  • \$\begingroup\$ I don't get it. From 1,2,2,3 you can make 3 subsequences of 2 integers: 12; 22; 23. And the middle one is not made of different integers. So how it comes that "the number of contiguous subsequences that contain at least N distinct integers" is 5 in this case? \$\endgroup\$ – Sheik Yerbouti Mar 7 at 11:55
  • 2
    \$\begingroup\$ @Sheik 1,2, 1,2,2, 2,2,3, 2,3, 1,2,2,3 are the subsequences that contain at least 2 distinct integers. In my opinion, there should be a column in the table of test-cases that contains these sub-sequences for clarity. \$\endgroup\$ – Hyperbole Mar 7 at 17:40
  • \$\begingroup\$ @Hyperbole thank you very much. It wasn't that hard to get but, I don't know, English is not my language. Anyway if not on the test cases, they should be at least in an example before the tests. \$\endgroup\$ – Sheik Yerbouti Mar 7 at 18:24
  • 1
    \$\begingroup\$ @Hyperbole I appreciate the feedback. I updated the post with the example. \$\endgroup\$ – user101295 Mar 7 at 18:57
  • 1
    \$\begingroup\$ @SheikYerbouti I have updated the post with the example. \$\endgroup\$ – user101295 Mar 7 at 18:57
2
\$\begingroup\$

Tri tri tribonacci

Tribonacci from Wikipedia:

The tribonacci numbers are like the Fibonacci numbers, but instead of starting with two predetermined terms, the sequence starts with three predetermined terms and each term afterwards is the sum of the preceding three terms.

The challenge

Given three arrays of three integers, for each array:

  1. Find the generator G (the first non-negative integer) of the sequence to which the three numbers belong
  2. Then find the G-th element of the sequence (zero-indexed*)

The three integers found are indeed part of a tribonacci sequence, output the G-th element of that sequence.

*The sequences are zero-indexed because G may be 0 and in that case you have to find the 0th element of the sequence.

Example

Given the input

[[5, 11, 20], [1, 2, 3], [23, 39, 67]]

5 11 20 are part of the sequnce 2 4 5 11 20, which starts with 2, so we take the 2nd element of the sequence: 5

1 2 3 are part of 0 1 0 1 2 3, so we take 0

23 39 67 are part of the sequence 7 11 5 23 39 67 129 235 so we take 235

Now 5 0 235 are part of the sequence 230 5 0 235 so the output is the 230th element of that sequence:

174892031986606286607812889236621806383715371411020300455075910

Input / output

You can take the input as you prefer: an array of three arrays, three arrays, an object, a string, etc.

You are not required to handle integers larger than those implemented by your chosen language, I will post plenty of test cases with smaller output after I make a program for the challenge.

This is , everyone wins.

Meta

Please say something.

\$\endgroup\$
7
  • 2
    \$\begingroup\$ Are you sure you meant to put This is [tag:code-golf], everyone wins.? That's not code golf :p \$\endgroup\$ – Redwolf Programs Mar 8 at 23:55
  • \$\begingroup\$ Looks fine to me, except for the "zero-indexed" part. 0-indexing and 1-indexing are usually equally allowed. (Also, people might complain about "why not just make it two challenges, one for finding the generator and one for n-th tribonacci") \$\endgroup\$ – Bubbler Mar 9 at 0:00
  • \$\begingroup\$ @RedwolfPrograms we keep the truth in the sandbox, I will put "the shortest wins" in the challenge \$\endgroup\$ – Sheik Yerbouti Mar 9 at 0:00
  • \$\begingroup\$ @Bubbler the zero-indexing is because the sequence may start with 0, and in that case you have to find the 0th element of the sequence. About splitting the challenge, I didn't check but it's possible that one or both of the parts already exist. \$\endgroup\$ – Sheik Yerbouti Mar 9 at 0:03
  • 1
    \$\begingroup\$ @SheikYerbouti That makes sense. Then it would be better to include the justification of why it should be 0-indexed in the post. \$\endgroup\$ – Bubbler Mar 9 at 0:07
  • \$\begingroup\$ @Bubbler I added a note to justify the restriction, thank you for the feedback! \$\endgroup\$ – Sheik Yerbouti Mar 9 at 0:15
  • \$\begingroup\$ Maybe "This is code golf, so shortest code wins, but who's counting?" instead of "everyone wins"? \$\endgroup\$ – Beefster Mar 15 at 15:47
2
\$\begingroup\$

Integer partitions into fixed parts with coprime constraint, and exclusion set

Background

Let \$a\$ \$\in \mathbb{N}\$, \$b\$ \$\in \mathbb{N}\$, \$c\$ \$\in \mathbb{N}\$ and \$S\$ be some subset of \$\{i:1\leq i\leq a\}\$.

Consider \$X(a ,b, c, S)\$: The number of integer partitions of \$a\$ into \$b\$ many parts, where each of the parts are co-prime to \$c\$ and no part is contained within \$S\$.

Formally, for \$b=2\$

$$X(a ,2, c, S) = |\{(x, y): x + y = a,\ gcd(c, x) = gcd(c, y) = 1, x \notin S, y \notin S,\ x \leq\ y\}|$$

Challenge

Codegolf, standard rules apply. Write code to calculate the function \$X(a ,b, c, S)\$ above.

Inputs:

  • \$a\$, an integer. Your function does not need to be correct for \$a \le 2\$.

  • \$b\$, an integer. Your function does not need to be correct for \$b \le 1\$.

  • \$c\$, an integer.

  • \$S\$, can be any set of integers between \$1\$ and \$a\$ (inclusive). The elements of \$S\$ are unique.

Test-cases

Below test cases are written in the following format: \$a, b, c, S =\$ Answer

3, 2, 2, {} = 0
4, 2, 2, {} = 1
4, 2, 3, {2} = 0
7, 3, 5, {} = 3
7, 3, 2, {5} = 1
11, 3, 1, {} = 10
11, 3, 2, {} = 4
11, 3, 3, {5, 7} = 1

BONUS

Brownie points for anyone who can do either of the following:

  1. Disprove the following recursive relationship.
  2. Extend the following recursive relationship (for higher values of \$b\$), and/or write code utilising it.

Recursive formula for \$b = 3\$ (Might be incorrect):

$$X(a ,3, c, S) = \sum_{i=1}^{i=\lfloor\frac{a}{2}\rfloor} {X(a - i, 2, c, T_i)} $$

With

$$T_0 = S$$

and,

$$T_i = T_{i-1}\cup\{i - 1, a + 1 - i\},\ for\ i \geq 1$$

Questions for sandbox

Is this challenge good to go?

\$\endgroup\$
7
  • \$\begingroup\$ you can add tags here via [tag:<tagname>]. \$\endgroup\$ – Razetime Feb 27 at 8:37
  • \$\begingroup\$ @Razetime , sorry total noob here. In the comment section? or do I edit the post and add the [tag:<tagname>] at the end? \$\endgroup\$ – DanielOnMSE Feb 27 at 9:30
  • 1
    \$\begingroup\$ in the post. Add it near the title, like in the other posts. \$\endgroup\$ – Razetime Feb 27 at 9:55
  • \$\begingroup\$ About test cases. It looks like that this challenge doesn't have too many test cases, don't need a lot. \$\endgroup\$ – user202729 Feb 27 at 12:15
  • \$\begingroup\$ I think the info about integer types makes the question harder to read (they all have default rules), so I removed it. \$\endgroup\$ – user202729 Feb 27 at 12:15
  • \$\begingroup\$ The tag doesn't matter too much, as long as there's a code golf tag. // Usually people don't like time limits, but if you insist there's either "solutions must have time complexity that does not exceed (something)" or "you must be able to run the program to completion with the following test cases" or "the program must finish on my machine in X seconds" (requires you running the programs) [please review other sandbox posts] \$\endgroup\$ – user202729 Feb 27 at 12:17
  • \$\begingroup\$ @user202729 Thanks for the edits. Yes I suppose I'm not interested in any time constraints. Rather just interested to see the solutions people can come up with. Yes I will need to make some test cases, will add them when I get a chance. \$\endgroup\$ – DanielOnMSE Feb 27 at 13:01
2
\$\begingroup\$

Posted

\$\endgroup\$
7
  • \$\begingroup\$ The analogy isn't exact, but consider the name "Literate JS" \$\endgroup\$ – Unrelated String Feb 23 at 13:29
  • \$\begingroup\$ Test cases (N denotes literal new line): //aN//b, /*/, /*a*//*b*/ (<- should a space be inserted between the tokens in this test case? [please review other sandbox posts] \$\endgroup\$ – user202729 Feb 24 at 4:13
  • \$\begingroup\$ suggested test case "abc //" def // ghi to show whether an answer should implement a full JS tokenizer (in actual JS, only ` ghi` is commented, while it makes more sense to only require the answerers to return " def // ghi) \$\endgroup\$ – Wzl Feb 24 at 17:51
  • \$\begingroup\$ @Wezl good point, I never thought of that! I agree that a full JS tokenizer would be too complex, so I'm going with your sensible version. \$\endgroup\$ – A username Feb 25 at 3:36
  • \$\begingroup\$ @user202729 In the first case, a newline would be inserted between the two. In the second case, the output would just be ab. Thanks for clarifying, and I'll look at some other sandbox posts later. \$\endgroup\$ – A username Feb 25 at 3:39
  • \$\begingroup\$ Then why is the third test case have a space added between the first two comments? \$\endgroup\$ – user202729 Feb 25 at 7:21
  • \$\begingroup\$ Sorry, typo. Thanks for pointing that out! \$\endgroup\$ – A username Feb 25 at 8:31
2
\$\begingroup\$

Decompress an integer, Jelly style

\$\endgroup\$
1
  • 3
    \$\begingroup\$ Algorithm description looks good. Requiring to handle inputs up to \$2^{64}-1\$ sounds unfair to the languages that do not support that large integers though. I'd prefer something in the line of the 5th bullet under the Rules on this challenge. \$\endgroup\$ – Bubbler Mar 25 at 0:09
2
\$\begingroup\$

(Σ*)² ⟲ Σ* (aka Round-Trip a String Pair)

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

Unique languages

As we found out before, each of the 680 languages on Try it online! has a "TIO uniqueness", defined as the length of the shortest substring that appeared in the language's name and no others'.

This time, we're going to make it more general. Given a list of strings S and a target T, output the length of the shortest substring of T that is not in any other element of S. You may choose whether T is part of S or not. The elements of S will always be unique. All elements of S, and T, will only contain lowercase letters (abcdefghijklmnopqrstuvwxyz). You may also take input as uppercase if you wish.

Your score will be calculated as code length × TIO uniqueness, where code length is measured in bytes and TIO uniqueness is the TIO uniqueness as specified here. If a language has an undefined TIO uniqueness, it cannot compete in this challenge.

The answer with the lowest score wins.

Meta

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

Check B-powersmoothness - posted

\$\endgroup\$
2
  • \$\begingroup\$ Can you link to the wiki article please. \$\endgroup\$ – Alex bries Mar 29 at 8:57
  • 1
    \$\begingroup\$ @Alexbries I added a link \$\endgroup\$ – Command Master Mar 29 at 9:06
1
26 27
28
29 30
113

You must log in to answer this question.

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