574
\$\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 requires more feedback, but it's been ignored, you can ask for feedback in The Nineteenth Byte. It's not only allowed, but highly recommended! Be patient and try not to nag people though, you might have to ask multiple times.

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".

\$\endgroup\$
2
  • \$\begingroup\$ What if I posted on the sandbox a long time ago and get no response? \$\endgroup\$
    – None1
    Commented May 15 at 14:05
  • \$\begingroup\$ @None1 If you don't get feedback for a while you can ask in the nineteenth byte \$\endgroup\$
    – mousetail
    Commented May 29 at 13:27

4769 Answers 4769

1
100 101
102
103 104
159
0
\$\begingroup\$

nth number that multiplies k equals its reverse

Tags: ,


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


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

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

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

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

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

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

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

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

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

Reinventing the Modularization Wheel

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

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

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

Requirements

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

This is and the shortest answer in bytes wins!

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

Print a Pilcrow Scarecrow

Print the following ascii scarecrow using the pilcrow character

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

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

It's time to unify!


Introduction

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

Specification

Input

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

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

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

Output

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

What to do?

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

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

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

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

Corner Cases

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

Who wins?

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

Test-cases

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

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

Step-By-Step Example

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

Example 2:
Let [("f",2),("g",2),("a",0),("b",0)] be your functions
[f(g(a,x),g(y,b)=f(x,g(v,w)),f(x,g(v,w))=f(g(x,a),g(v,b))] => (remove f in second equation)
[f(g(a,x),g(y,b)=f(x,g(v,w)),x=g(x,a),g(v,w)=g(v,b))] => (function symbol missmatch in equation 2)
[]
\$\endgroup\$
0
\$\begingroup\$

create a golfed down regexp that matches all substrings

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

The word "lucky" contains 15 different substrings:

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

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

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

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


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

Write a Gopher Interpreter

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

Pass Conditions

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

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

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

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

Example Input and Output

Input:

&++<'×<&÷+<^-<<×-<#!+<$@-<&@<×-<@++<@<.!<=

Output:

Hello World
\$\endgroup\$
1
  • \$\begingroup\$ Thanks for using the Sandbox! Anyway, you should add the relevant information on Gopher to the body of this post, as if your github account/repo dies or is changed people still need to be able to answer this question. \$\endgroup\$ Commented Jul 11, 2016 at 17:15
0
\$\begingroup\$

Having had a look, it seems there isn't a challenge for "Given any date, output the day of the week". Is that a challenge worth having?

Something like

"Given an input date, in the form dd/mm/yyyy, output the day of the week"

Shortest code wins

What do we think? perhaps this already exists and I didn't find it.

\$\endgroup\$
2
  • 3
    \$\begingroup\$ Duplicate \$\endgroup\$ Commented Jul 11, 2016 at 14:04
  • 2
    \$\begingroup\$ Glad I checked! \$\endgroup\$
    – Matt
    Commented Jul 11, 2016 at 14:05
0
\$\begingroup\$

Golf your way from (inc|dec)rements to the basic math operations

Write five different functions or programs that do addition, subtraction, multiplication, division and modulo with integers by only using increments, decrements, loops/recursion and comparisons.

  • Assume division & modulo will never receive 0 or negative integers as the divisor/modulus.
  • Modulo's result has the sign of its dividend.
  • Division truncates its quotient, e.g divide(11, 4) returns 2 and divide(-5, 3) returns -1.
  • Programs must print the result to STDOUT. Functions must return the result.
  • Your five functions/programs may invoke each other.
  • All functions/programs must support 32-bit signed integers, i.e everything between -231 and 231-1 (inclusive). Overflow is allowed, i.e it's OK if add(2147483647, 1) returns -2147483648.
  • Explicitly adding/subtracting 1 to/from numbers is allowed, in case you use a programming language that doesn't have built-ins for incrementing and decrementing.
  • Shortest program wins as long as it doesn't exploit standard loopholes!


I seriously have no idea how to make test cases for this.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Why not one function that returns all of those? You should also specify what you mean by divisions and modulo as they differ slightly from language to language. (E.g. what is -2 mod 5? and what is -1/2?) And only doing increments/decrements, loops/recursion and compraisions is also quite vague. \$\endgroup\$
    – flawr
    Commented Jul 10, 2016 at 16:37
  • 1
    \$\begingroup\$ I don't think test cases would really be necessary since it's just basic arithmetic. You can easily tell if your output is correct or not. Also, I'm assuming that division will truncate the quotient since there isn't really any way to do decimals in this fashion, but that should probably be specified. \$\endgroup\$ Commented Jul 11, 2016 at 14:18
  • 1
    \$\begingroup\$ I already did this because I was bored... \$\endgroup\$
    – univalence
    Commented Nov 19, 2016 at 12:52
0
\$\begingroup\$

ASCII to Unicode equation beautifier

You may well be used to typing equations in ASCII, but with the advent of Unicode we can spruce them up a bit. We can fix

  • Powers (numeric superscripts only)
  • Numeric subscripts
  • Mathematical signs (-, *, / ^ → -, ×, ÷, ↑)

Examples:

x^3 - 1 = (x - 1)(x^2 + x + 1)  →  x³ − 1 = (x − 1)(x² + x + 1)
g_0 = 3^^3^^3 -= 3^(3^3)        →  g₀ = 3↑↑3↑↑3 = 3↑(3³)
800*600                         →  800×600
1/x                             →  1÷x

You may assume that all digits directly after a ^ or _ are meant to be super/subscripts (and the ^ or _ to be removed) and that all the mathematical signs are to be replaced wherever they appear.

This is , so the shortest solution wins.

\$\endgroup\$
1
  • 2
    \$\begingroup\$ This seems to be two questions crammed into one. The first one is the superscript and subscript transformation, which is mildly interesting; and the second one is the straight substitution of various characters for others, which is completely boring apart from the ambiguity it introduces in the interpretation of ^. I suggest ditching the substitution of minus, times, and divide symbols and giving explicit lists (with copyable characters and Unicode code points in decimal and hex) of the superscript, subscript, and up-arrow characters. \$\endgroup\$ Commented Jul 14, 2016 at 6:39
0
\$\begingroup\$

Autotune a chord

Auto-Tune is a pitch correction program which alters the pitch without changing the length. It can be used to fix off-pitch chords in music, which is good because I have an out of tune piano. The goal of this challenge is given some input waveform which contains a single chord played on my piano, tune each note to the nearest equally tempered note found on a standard piano (see Input for more details).

Input

The input is something which looks like a time-domain audio sample input containing a single chord being played. All data is sampled at 192kHz, with 16-bit PCM (little endian integer), mono channel. The input may come from any source desired (file io, stdio, function parameter, etc.).

Output

The output of your code should be something which looks like a time-domain audio sample containing the tuned chord. It does not need to have the same sample rate or datapoint format as the input, but must be the same length in real time as the original sample (or as close as possible). The output may be to any source desired (file io, stdio, function parameter, etc.).

Examples

See this github repo for various inputs and outputs. The provided examples have inputs/outputs in an uncompressed wav file. Feel free to re-encode/gut the data for your inputs.

Scoring

This is code golf; shortest code wins. Standard loopholes apply. You may use any libraries/builtins so long as they were not designed specifically for performing pitch correction.

Main concern: This challenge seems potentially too difficult, so one alternative I've been considering is changing the piano samples into sine waves at the fundamental frequencies (avoids issues with amplitude decay/harmonics). An even simpler challenge might be to give inputs in the frequency domain (list of fundamental frequencies), though I'm not sure that would make for an interesting challenge as it seems almost too easy at that point.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ It seems very difficult to determine what outputs are considered correct. \$\endgroup\$
    – feersum
    Commented Jul 14, 2016 at 7:44
  • \$\begingroup\$ yeah, that thought had crossed my mind as well. I've considered measures based on the delta of the FFT of user output/expected output, but I'm not sure this is necessarily a good measure of "in tune". \$\endgroup\$ Commented Jul 14, 2016 at 7:47
  • \$\begingroup\$ I suspect that the biggest technical challenge would be phase. The harmonics of each string in isolation should be in phase, because they all derive from a single hammer strike, but the keys of the chord are probably not all struck at exactly the same time, and there will be resonant driving interactions between them which will complicate the signal. I suggest that you explicitly state that people can ignore this issue. \$\endgroup\$ Commented Jul 14, 2016 at 13:39
0
\$\begingroup\$

This will be a challenge. Additional tags are , and .

How fast is your Stack Exchange community?


tl;dr

Your task is to find how fast a Stack Exchange community reacts. "How fast" is here the average of the time elapsed until the first answer or the closing of the question.

Input

  • the Stack Exchange site's name, e.g. stackoverflow, codegolf, codereview etc.
  • optionally the Stack Exchange API URL: https://api.stackexchange.com/2.2/

Requirements

  • Calculate the average time it takes until the first answer or closing of the question.
  • Take the 1000 latest questions into account, e.q. ten API requests with 100 items each.

Output

  • Output the average time in minutes and seconds, like 01:23 or 1:23.
  • Run your program at least against stackoverflow, codegolf and code review and show the results.
  • Feel free to add results for your other favorite communities as well.

Boilerplate

  • You can write a program or a function. If it is an anonymous function, please include an example of how to invoke it.
  • This is so shortest answer in bytes wins.
  • Standard loopholes are disallowed.
  • Leading/trailing whitespaces/newlines are fine.
\$\endgroup\$
4
  • 2
    \$\begingroup\$ How do you count unanswered and unclosed questions? Also, I don't know about the API, but there might be problems with deleted answers. I think you should probably write a reference implementation before posting this. \$\endgroup\$ Commented Jul 14, 2016 at 13:10
  • \$\begingroup\$ @FryAmTheEggman Thanks a lot – all good points. Didn't think that there might be questions that are unclosed and unanswered. Will check the API whether deleted even will be send. Good point with the reference implementation – maybe in JavaScript that it can be run as a stack snippet. What do you think in general about the challenge idea? Boring? Interesting? Too complicated? \$\endgroup\$ Commented Jul 14, 2016 at 13:15
  • 1
    \$\begingroup\$ It's about doing basically one task, so I don't think it is complicated. I think the results are probably more interesting than the challenge (there are only so many ways to average something and to parse html), but it makes sense and isn't trivial, so I wouldn't say it's boring. Seems fine overall. Also note internet, date and, I suppose, math. \$\endgroup\$ Commented Jul 14, 2016 at 13:24
  • \$\begingroup\$ @FryAmTheEggman Thanks again for your feedback and the tag suggestions. I also think that the results are the interesting part. I wanted to try a popularity contest in the first place because of that. But I couldn't come up with the necessary criteria. :) \$\endgroup\$ Commented Jul 14, 2016 at 13:30
0
\$\begingroup\$

Convert a BMP image to grayscale

The images manipulation is a great way to exercise and increase your skills. In my opinion it's also very interesting.

What you must do?

The objective of exercise is much easy: convert an image bmp colorful in an image grey.
You can use every language, the question most appreciated will be that don't use library.
Image stock: http://www.mediafire.com/convkey/c491/p7aya9cxafvfc91zg.jpg Image converted: http://www.mediafire.com/convkey/3903/rcigd79pkwd12qczg.jpg?size_id=3

\$\endgroup\$
7
  • 1
    \$\begingroup\$ What is the winning criterion? It is code-golf, popularity-contest, other criterion? \$\endgroup\$ Commented Jul 15, 2016 at 10:30
  • 1
    \$\begingroup\$ Also, the You can use any language is unnecessary, it's implied here. And you can use ![](<image url>) to show the images. \$\endgroup\$ Commented Jul 15, 2016 at 10:33
  • 4
    \$\begingroup\$ This is very underspecified at present. 1. What weights should be used in the conversion from RGB to greyscale? 2. What bit depths should be supported? 3. Is it required to support all of BMP's features (e.g. ICC colour profiles, CMYK, JPEG, PNG)? If not, what is the minimum feature set which must be supported? \$\endgroup\$ Commented Jul 15, 2016 at 10:53
  • \$\begingroup\$ @Blind To mention someone, you can use @<username>, and please add the tags to your post ([tag:<tag name>]) \$\endgroup\$ Commented Jul 15, 2016 at 12:43
  • \$\begingroup\$ @TùxCräftîñg , It's a code-golf. @ Peter Taylor , It's equal, you can use that weight you want. 2.see 1st. 3.just support BMP. \$\endgroup\$
    – Blind
    Commented Jul 15, 2016 at 16:27
  • 1
    \$\begingroup\$ That doesn't actually answer questions 2 or 3. \$\endgroup\$ Commented Jul 15, 2016 at 19:32
  • \$\begingroup\$ Just to let you know, you can only @mention one person per comment, and it won't work with a space between the @ and the name. \$\endgroup\$ Commented Jul 20, 2016 at 16:20
0
\$\begingroup\$

Do I have an emoji?

Given an input string in your language, return truthy/falsey if the input contains an valid Unicode emoji character.

What is an Emoji?

The word emoji comes from the Japanese:

絵 (e ≅ picture) 文 (mo ≅ writing) 字 (ji ≅ character).

Emojis are pictorial symbols used to represent feelings, actions, or objects.

For this challenge, use the Full Emoji Data list provided by Unicode as a reference to determine which characters are valid Emojis.

Sample test cases:

"" -> 0

"💩" -> 1

"hello💩" -> 1

"hello" -> 0

"!±≡𩸽" -> 0


Discussion:

This seems trivial, but I noticed we didn't have an emoji detection challenge. There might be a concern about the encoding of the input string, but reading the linked meta posts about Strings I feel that this challenge can use whatever String format the language used in the answer supports.

The acceptable output for booleans is also up for discussion. Do we have a meta post on what output formats are acceptable for booleans?

\$\endgroup\$
6
  • 5
    \$\begingroup\$ One question: What exactly is an emoji? I think it should be specified in the challenge. \$\endgroup\$
    – user48538
    Commented Jul 18, 2016 at 16:38
  • 1
    \$\begingroup\$ See meta.ppcg.lol/q/2190, just say truthy/falsey. \$\endgroup\$ Commented Jul 18, 2016 at 16:39
  • \$\begingroup\$ @zyabin101 can I use Unicode's emoji list as a list of valid emoji characters for this challenge? \$\endgroup\$
    – JAL
    Commented Jul 18, 2016 at 16:44
  • \$\begingroup\$ Up to you. [filler text] \$\endgroup\$
    – user48538
    Commented Jul 18, 2016 at 16:51
  • \$\begingroup\$ I've attempted to clarify what an emoji is, at least for this challenge. Hopefully this will make this question more clear and a better fit for the site. \$\endgroup\$
    – JAL
    Commented Jul 19, 2016 at 2:39
  • \$\begingroup\$ A source which gives actual ranges would be more convenient for people writing answers, although unicode.org/Public/emoji/3.0//emoji-data.txt isn't entirely consistent with the other lists. \$\endgroup\$ Commented Jul 19, 2016 at 9:52
0
\$\begingroup\$

Trim trailing spaces in less than O(n²) time

Since s/\s+$// runs in O(n²) time, Stack Overflow needs to replace it with something faster. Please write a code snippet for them. Your score will be the number of bytes in your submission, multiplied by the time taken to process a string of 1000 non-spaces with 1,000,000 leading and trailing spaces, divided by 1000 times the time taken to process a string of 1-non space with 1,000 leading and trailing spaces. (In other words, if your code runs in O(n) time then this should cancel out.)

\$\endgroup\$
6
  • \$\begingroup\$ The fancy scoring seems like it might be confusing/hard to implement. Why not just restrict the complexity to be less than O(n²) like you suggest in the title? \$\endgroup\$ Commented Jul 21, 2016 at 13:18
  • \$\begingroup\$ @FryAmTheEggman That's fairly easily fixed with (?<!\s)\s+$ or using RTL matching in .NET/Retina. (In fact, the latter would probably be a good candidate for winning the challenge even if actual runtime is taken into account.) \$\endgroup\$ Commented Jul 21, 2016 at 15:29
  • \$\begingroup\$ @MartinEnder That is what I had in mind ;) Is there a reason that would be bad? I think that is likely around the best performance you can get, being linear w.r.t. the number of spaces at the end of the string? \$\endgroup\$ Commented Jul 21, 2016 at 15:33
  • \$\begingroup\$ @FryAmTheEggman well it just means there's likely a very simple solution that might win the challenge. \$\endgroup\$ Commented Jul 21, 2016 at 15:35
  • \$\begingroup\$ The scoring mechanism is not going to work well because the times will be so small that there will be more noise in the measurement than signal. Especially for the smaller test case, where the string will fit in L1 cache. \$\endgroup\$ Commented Jul 21, 2016 at 16:15
  • 1
    \$\begingroup\$ The scoring can be exploited by intentionally doing badly on smaller cases. \$\endgroup\$
    – xnor
    Commented Jul 22, 2016 at 2:46
0
\$\begingroup\$

Reverse stdin to stdout, Unicode aware and by grapheme clusters

It's 2016. High time that we were Unicode-aware, don't you think?

Given a UTF-8 string on stdin, reverse it by extended grapheme clusters (as defined by the Unicode consortium; this can be found here, for instance) and place it on stdout. This is seemingly a trivial challenge, but surprisingly difficult in many languages.

You may not use an explicit end-of-file character - if supported, use EOF. If not supported, use an explicit length at the start of the string, and document the format.

Note that the string may be of any length (barring RAM limitations).

You must handle direction override characters "properly", in the sense that the directionality of every character must remain the same after reversing the string.

\$\endgroup\$
4
  • \$\begingroup\$ I need examples for this. \$\endgroup\$
    – TLW
    Commented Jul 21, 2016 at 23:05
  • \$\begingroup\$ Can you give a link to the Unicode definition of grapheme clusters? \$\endgroup\$
    – Steven H.
    Commented Jul 21, 2016 at 23:59
  • \$\begingroup\$ Sure: unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries \$\endgroup\$
    – TLW
    Commented Jul 22, 2016 at 1:18
  • 1
    \$\begingroup\$ I don't understand what you mean about the direction override characters. Could you give some test cases (preferably with hexdumps of input and output)? What other corner cases are there? On a first read-through I can tell that understanding the definition of extended grapheme cluster will take some time, but I'm not clear on whether it covers e.g. emoji type modifiers, emoji families, etc. The definition also makes reference to degenerate cases, and they should be covered by test cases too. \$\endgroup\$ Commented Jul 27, 2016 at 12:05
0
\$\begingroup\$

Given an ordinal A and a nonnegative integer B, compute f_A(B)

A will be expressed in Cantor Normal Form. A number is in Cantor Normal Form if it is 1, or if it is either of the form a+b or w^a, where a and b are in Cantor Normal Form, and w is the ordinal omega.

f_A(B) is the fast-growing hierarchy, specifically, the Wainer Hierarchy. f_0(n)=n+1. f_(a+1)(n)= n iterations of f_a to n. f_a(n)=f_an if a is a limit ordinal. a[n] is the nth member of the fundamental sequence for a.

\$\endgroup\$
2
  • \$\begingroup\$ You'll definitely need to add the definitions of these, as most people won't have any idea how to answer. You can use one of various online TeX -> image services and add those to your post. Sadly we don't have MathJax activated because it borked a bunch of other features. I'd also heavily recommend adding some test cases. \$\endgroup\$ Commented Jul 21, 2016 at 14:38
  • \$\begingroup\$ Test cases are impossible to add. But thanks for formatting advice! \$\endgroup\$ Commented Jul 21, 2016 at 15:14
0
\$\begingroup\$

Difficulty Naming


Introduction

In the game osu!, players can make their own beatmaps (levels). The harder the beatmap is, the bigger the star rating will be.

Beatmaps have star icons with different colors and letters according to their star rating.

osu! has also four game modes. The shape of the icon will change depending on the game mode.

The Challenge

Given a star rating and a gamemode, output the (generally used) difficulty name.

The Input

  • A positive floating-point number (star rating)
    • You can assume the number will never have more than two decimal places.
  • A positive integer (game mode)
    • 1 is Standard, 2 is Taiko, 3 is Catch the Beat and 4 is Mania (you can use other numbers for the game modes, these are the default.)

The Output

  • A string (difficulty name)

Use this table to determine the output:

diff table http://image.prntscr.com/image/174e34e56dbb40ad81b209fac3fdc5bc.png

(if the star rating is exactly 5.25, it counts as Above 5.25)

Rules

  • This is , so the shortest solution wins.
  • Standard loopholes are disallowed.
  • You can take the input either as an array/list, a string separated by commas or spaces, or each number individually.
  • Again, you can use other numbers for the game modes.

Test Cases

2.24, 2 ---> Futsuu
1.1, 4 ---> Basic
3.14, 1 ---> Hard
7.0, 3 ---> Overdose
5.0, 4 ---> Exhaust
31415.0, 2 ---> Ura Oni
0.01, 1 ---> Easy
5.25, 1 ---> Expert

Sandbox

If you see any grammar errors or anything like that, please tell me, I'm not a native speaker.

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

Could it all add up to nothing?

Given an input number, return a truthy value if it is possible to arrange permutations of + and - signs to make the sum of the range up to that value 0.

Note that you don't have to output which set of combinations is truthy.

Test cases:

1 (1) --> Falsy
2 (1,2) --> Falsy
3 (1,2,3) --> 1+2-3, Truthy
4 (1,2,3,4) --> -1+2+3-4, Truthy
5 (1,...,5) --> Falsy
6 (1,...,6) --> Falsy
7 (1,...,7) --> 1+2-3-4+5+6-7, Truthy
8 (1,...,8) --> 1+2-3-4-5-6+7+8, Truthy

Just one thing - no using eval or similar commands.

This is so the shortest answer in bytes wins!

Sandbox notes

Require a range or a list as input?

\$\endgroup\$
8
  • \$\begingroup\$ For general lists, I think it would be basically the same as this question. For ranges, I suspect there's a direct criterion. \$\endgroup\$
    – xnor
    Commented Jul 25, 2016 at 21:50
  • \$\begingroup\$ @xnor so do I which is why I think it could be more interesting if the pattern could be found. It gets exponentially longer as the lists get longer so is harder to check - better as a fastest algorithm/fastest code? \$\endgroup\$
    – Blue
    Commented Jul 25, 2016 at 21:52
  • \$\begingroup\$ I can show that it's exactly the numbers of form 4*n or 4*n-1. \$\endgroup\$
    – xnor
    Commented Jul 25, 2016 at 21:59
  • \$\begingroup\$ (Ninja'd by xnor) There is probably quite an easy pattern, e.g. if the upper limit is divisible by four, you can always find a zero sum with a "little gauss" argument. \$\endgroup\$
    – flawr
    Commented Jul 25, 2016 at 22:01
  • \$\begingroup\$ @xnor I'd love to see a proof=) \$\endgroup\$
    – flawr
    Commented Jul 25, 2016 at 22:01
  • 4
    \$\begingroup\$ The key is that the pattern +--+ on four consecutive numbers adds to 0. With 4*n, just repeat +--+. With 4*n-1, do +1+2-3, then repeat +--+. With the rest, the sum is odd so it's impossible. \$\endgroup\$
    – xnor
    Commented Jul 25, 2016 at 22:04
  • \$\begingroup\$ So saveable? Sounds trivial now. \$\endgroup\$
    – Blue
    Commented Jul 25, 2016 at 22:31
  • \$\begingroup\$ Well, I'm guessing xnor's solution would be pretty short. \$\endgroup\$
    – mbomb007
    Commented Jul 29, 2016 at 14:35
0
\$\begingroup\$

Grow and Visualize Decision Tree

META: work in progress...

  • Would providing the points as an image instead of a list of coordinates simplify the challenge?

Given two sets of points in the plane with coordinates x,y, both in [0,1), grow a (binary) decision tree as specified below and output a square pixel image of a given size, that visualizes the corresponding tree.

How to grow the tree

The we call the two sets here classes and follow the following recursive approach:

  1. If at least one of the classes is empty, label the current node as a leaf of the nonempty class and stop. Otherwise:

  2. First find the mean of each of the x (or y)-coordinates of each of the two classes, and find the mean/center c of those two means. Then we partition both classes as follows: All points with an x (or y)-coordinate strictly smaller than c belong to one half, all the other ones to the other half. The we set the current node to the decision is the x-cooridinate (or y-coordinate) less than c?

  3. For each of the halves, go back to step 1 and 2, and set the resulting nodes as the child nodes from the current node. If you previously considered the x-coordinates, then consider y-coordinates and vice versa.

enter image description here

How to visualize the tree

We partition the the unit interval [0,1) into N equidistant sub intervals [0,1/N), [1/N,2/N), [2/N,3/N)... and correspondingly the unit square [0,1)x[0,1) into squares

[i/N,(i+1)/N)x[j/N,(j+1)/N) for i,j=0,1,2,...,N-1

which later will be represented by a pixel. For each square [i/N,(i+1)/N)x[j/N,(j+1)/N) we classify the point i/N,j/N with the tree we just grew and colour the corresponding pixel with the corresponding colour.

For the example above the output would look like so:

enter image description here

Details

  • Input: An integerN>5 and two sets of points in any convenient format (e.g. as two separate list of points, or as a single list with a label for each point etc.) You can assume that in total there is at least one point.
  • Output: A pixel image (vector images composed of squares are ok too) of the visualization.
    • You have to choose any two distinct colours, I recommend blue and red.
    • The x-axis should point to the right, the y-axis can point in any direction.
    • The submission should display the image on the screen or save it to a file (like jpg/png/tiff or similar formats)
\$\endgroup\$
2
  • \$\begingroup\$ 1. The example has the y-axis running upwards, but the text doesn't specify whether that's required. 2. What exactly counts as a "pixel image"? In particular, I assume that a 2-dimensional array doesn't, but if you don't rule that out explicitly then someone will probably try it. \$\endgroup\$ Commented Jul 25, 2016 at 20:33
  • \$\begingroup\$ @PeterTaylor Thank you for the feedback, I added these points. I just had the idea to provide the input points as image, instead of a list of coordinates as a simplificatio. \$\endgroup\$
    – flawr
    Commented Jul 25, 2016 at 21:51
0
\$\begingroup\$

Quine-ify PPCG Answers!

Write a program that, when executed, returns the markdown file to your answer.

So, something like this:

#Python: 123 bytes

`{insert code here}`

Required things:

  • Header must be one hash (#)
  • The "code part" must be indented with four spaces (or surrounded with backticks if it's a one-liner).
  • The code part must be the actual code used to run the program.
  • There must be a separation of a newline between the header and the code.
  • The program's display bytecount MUST equal the program's actual bytecount.

Meta:

  • Most importantly: is it even possible, at all?
  • Do I need more clarifications?
  • Has this been done already?
\$\endgroup\$
2
  • 4
    \$\begingroup\$ "Most importantly: is it even possible, at all?" Definitely possible and in most languages no more difficult than a standard quine. The points in this answer probably apply as well. Also the third-to-last paragraph in this answer since languages with longer names will have a disadvantage. And finally, there's this related challenge (same thing without the quine part). \$\endgroup\$ Commented Jul 27, 2016 at 7:25
  • \$\begingroup\$ Actually, it's just too easy. Just use a normal quine with stuff before. \$\endgroup\$ Commented Aug 3, 2016 at 17:50
0
\$\begingroup\$

Make a sequence from a sequence!

(Title is bad and I should feel bad)

Given a sequence of positive Integers, take each consecutive pair of two (without taking an element two times) (x,y) and print y x times.

For example for 3,1,4,2

  1. Pairs are (3,1) and (4,2)
  2. (3,1): Print 1 three times: 1 1 1
  3. (4,2): Print 2 four times: 2 2 2 2
  4. Resulting sequence/output is 1, 1, 1, 2, 2, 2, 2

Input

A sequence of positive integers divisible by two. This can be done by parameters, a flat array, an integer stream etc. AS LONG AS there's no nesting or pre-matching of pairs involved.

Output

The resulting sequence as showcased above. Same rules for datatypes as declared in input, keep everything flat.

Test cases

      3, 1, 4, 2 => 1, 1, 1, 2, 2, 2, 2
            6, 5 => 5, 5, 5, 5, 5, 5
1, 1, 1, 1, 1, 1 => 1, 1, 1

Reference Implementation (Ruby, 55 bytes)

f=->a{a.each_slice(2).collect{|x|Array.new *x}.flatten}

Ungolfed:

def g *a
  a.each_slice(2).collect do |x|
    Array.new(x[0], x[1]) 
  end.flatten
end

The first golfer to find a shorter solution in this language gets a -1 bonus.

Scoring

Shortest code in bytes wins.

\$\endgroup\$
3
  • \$\begingroup\$ 1. You explicitly mention printing. Could a function submission also return the array? 2. I recommend dropping the bonus. 3. Can the input be empty or will there be at least one pair? \$\endgroup\$
    – Dennis
    Commented Jul 27, 2016 at 21:16
  • \$\begingroup\$ This is close enough to this question that I would cast my supervote to close as duplicate. \$\endgroup\$ Commented Jul 28, 2016 at 8:08
  • \$\begingroup\$ @PeterTaylor indeed. Will drop this challenge then. \$\endgroup\$
    – Seims
    Commented Jul 28, 2016 at 10:02
0
\$\begingroup\$

CAPTCHAs (Cops and Robbers Style)

Cops will write a program that generates a CAPTCHA (either through stdin/stdout or on whatever UI is available to your language using only built-ins).

Robbers will attempt to bypass the generated CAPTCHA programmatically, given access to the Cops' programs' stdin/stdout or UI process/thread (for example, in JavaScript, running on the same document and window).

I need help fleshing this idea out a little more... any suggestions will help.

\$\endgroup\$
7
  • 1
    \$\begingroup\$ How are you going to ensure that captchas are actually captchas, and not an encrypted string turned into an image? The only way I can think to ensure that we're actually dealing with Captchas is to have humans solve them, which would add another layer of complexity to this challenge. \$\endgroup\$ Commented Jul 29, 2016 at 16:03
  • \$\begingroup\$ @NathanMerrill Well, part of the requirement of a CAPTCHA is that humans should be able to pass the test without just guessing, but I don't know how to make that a more concrete requirement. Perhaps "The required input from an end-user should be visible and somewhat readable in the presented image / ascii-art"? \$\endgroup\$ Commented Jul 29, 2016 at 16:08
  • \$\begingroup\$ Right, that's super broad. Unless you have some sort of test where users actually fill out the captcha, I think its going to remain broad. (Unless you can think of another way to test) \$\endgroup\$ Commented Jul 29, 2016 at 16:12
  • \$\begingroup\$ @NathanMerrill I could volunteer to test by running and filling out a CAPTCHA, and give objective feedback whenever an answer is posted, saying whether the CAPTCHA cop submission is acceptable or not. Would that be a sufficient test? \$\endgroup\$ Commented Jul 29, 2016 at 16:14
  • \$\begingroup\$ Unfortunately not. It'd be like challenges that say "Write the cleanest code, judged by me". \$\endgroup\$ Commented Jul 29, 2016 at 16:15
  • \$\begingroup\$ @NathanMerrill here's an idea. I can add the popularity-contest tag by allowing voting of a cop submission to be based on the human usability. Then I don't have to define exactly what criteria makes a CAPTCHA acceptable. \$\endgroup\$ Commented Jul 29, 2016 at 16:25
  • \$\begingroup\$ That would theoretically work. Historically, though, popularity contests that have worked work because people would vote up based on the "wow factor". Aka, generate an image with limitation X, and people upvote and say "Wow, that's a impressive rendering". You'd really have a hard time getting to people vote based on "this is readable", but that's a personal opinion. I don't think it would be off-topic though. \$\endgroup\$ Commented Jul 29, 2016 at 16:28
0
\$\begingroup\$

Create me a Brainf*** assembler

Write a way to convert "human readable" assembly (of any kind) to Brainf***. I.E specify a language "X" (which may already exist or may be your own invention), and create a way to map each valid program to a valid Brainf*** program. This is a so the most convenient assembler as evidenced by upvotes wins!

\$\endgroup\$
12
  • \$\begingroup\$ Convenient is a very broad criterion for judgement. I'd recommend specifying a particular variety of assembly, then make it a code golf challenge. \$\endgroup\$ Commented Jul 29, 2016 at 22:46
  • \$\begingroup\$ @NathanMerill can I specify a specific language I have in mind? \$\endgroup\$ Commented Jul 29, 2016 at 23:06
  • \$\begingroup\$ @NathanMerrill and then make it code golf \$\endgroup\$ Commented Jul 29, 2016 at 23:06
  • \$\begingroup\$ Yes, that would be on topic, but not necessarily interesting, depending on the target language \$\endgroup\$ Commented Jul 29, 2016 at 23:15
  • \$\begingroup\$ github.com/rjhunjhunwala/S.I.L.O.S that is the target language, and since both BF and S.I.L.O.S are turing complete it seems possible, but challenge \$\endgroup\$ Commented Jul 29, 2016 at 23:16
  • \$\begingroup\$ You would need to include a complete specification of the language on your post, but I have no idea if that would be interesting \$\endgroup\$ Commented Jul 29, 2016 at 23:19
  • \$\begingroup\$ @Nathan Merrill all in all I think it seems to be a ridiculous challenge. Any non tricial in brainf*** is a challenge, now making code to generate non trivial brainf*** is impossible \$\endgroup\$ Commented Jul 29, 2016 at 23:20
  • \$\begingroup\$ @NathanMerrill I will delete this challenge as it seems to be uninteresting? \$\endgroup\$ Commented Jul 29, 2016 at 23:21
  • \$\begingroup\$ It's much easier to generate BF than to handwrite it. I don't know if it would be interesting, that's up to the community \$\endgroup\$ Commented Jul 29, 2016 at 23:23
  • \$\begingroup\$ It seems that it is challenging to write any reasonalbly readable environment for assembling to brainf*** \$\endgroup\$ Commented Jul 29, 2016 at 23:27
  • \$\begingroup\$ what if I choose X to be Brainfuck or Brainfuck+one extra command. \$\endgroup\$
    – KarlKastor
    Commented Jul 30, 2016 at 19:49
  • \$\begingroup\$ Than you would likely lose. @KarlKastor. It is not code-golf but rather popularity-contest \$\endgroup\$ Commented Jul 30, 2016 at 19:50
0
\$\begingroup\$

King of the golf course

Write a program that golfs Brainf*** programs. Similar to challenges on this site, you will be racing against the clock, and the byte count to maximize glory (reputation). Each program will be invoked with a series of command line arguments in this form

in out in out in out
Each program then has 1000 milliseconds to write a valid brainf*** program to botName.txt. This brainf*** program will take in a null terminated input from stdin and output the respective output according to the table. The code which writes the shortest programs as evidenced by the shortest of 5 runs (or more) will be crowned the winner with a green checkmark. Please note that my languages I support is limited and I may have to download the interpeter. I will have to disqualify non-free interpreters unless volunteers already possessing the interpereter/compiler are willing to help out.
Rules

  1. You may assume that anywhere from 15-30 in and out pairs will be provided.
  2. You may assume that inputs and outputs are valid english words from Random House Dictionary
  3. You may assume a non wrapping brainf*** implementation with byte values for cells and a tape size of no less than 30k cells
  4. The outputted bf programs may be of any length, but your submission may be no more than 10 kilobytes long (to prevent hardcoding)
  5. Invalid submissions will result in immediate disqualification until a bug patch is uploaded

\$\endgroup\$
6
  • \$\begingroup\$ I'm unsure why this is a KoTH. Why not simply make it a fastest-code? Also, I'd recommend making the number of in/out pairs larger (anywhere from 10 to 50). \$\endgroup\$ Commented Jul 31, 2016 at 1:11
  • \$\begingroup\$ @NathanMerrill so should I just make 10 - 50 pairs, and allow anyone to submit their fastest code although programmers with faster computers will win. \$\endgroup\$ Commented Jul 31, 2016 at 1:15
  • \$\begingroup\$ No. With fastest-code, one person (probably you) will run the submission themselves (just like in a KoTH) to provide fair scoring. \$\endgroup\$ Commented Jul 31, 2016 at 1:20
  • \$\begingroup\$ @NathanMerril ok sounds good. \$\endgroup\$ Commented Jul 31, 2016 at 1:22
  • \$\begingroup\$ @NathanMerril I will give the programs 1000 milliseconds to output the shortest programs they can, and the average shortest output programs after a few runs wins. \$\endgroup\$ Commented Jul 31, 2016 at 1:27
  • \$\begingroup\$ Hmm. That sounds more like a code-challenge then (just with a time limit) \$\endgroup\$ Commented Jul 31, 2016 at 1:33
0
\$\begingroup\$

Expand constants in a Brainfuck program

Introduction

When golfing in Brainfuck, Fred can never remember the shortest way to write any given constant, and looking it up takes too much time! Luckily, Fred remembered that PPCG can help! In this challenge, you'll need to convert base-10 numerals their Brainfuck representations.

Challenge

Write a program or function that takes a string of Brainfuck code containing some numbers, like this:

72.>105.>33.

and transforms each number into one of its Brainfuck representations, giving (for example) this:

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

Because Fred has not yet learned the secrets of Ctrl+C Ctrl+V, your code must be as small as possible to save Fred some valuable typing. Fred also wants to win contests with the output, so the code you generate must also be as small as possible.

Specification

  • Standard loopholes are forbidden; in particular, you cannot scrape http://esolangs.org/wiki/Brainfuck_constants (or any other site for that matter).
  • Your program or function may perform I/O through any of the default I/O methods.
  • Assume a wrapping implementation with 1-byte cells (i.e. -. gives ÿ (255)).
  • There will never be a number greater than 255 or less than 0 in the input (but you do have to handle 0 correctly!). Your program/function must handle all numbers 0-255 (inclusive).
  • You may assume that there are as many temporary cells as necessary to the right of the pointer location (but not the left).
  • You may assume that the cell where a number will go and all temporary cells are set to 0.
  • When substituting a number, the pointer must end at the cell with the number. All temporary cells must be reset to 0.
  • You may assume that there will never be any non-Brainfuck, non-digit characters in the input, and that the input will never be empty (i.e. the input will match /^[,\.\[\]+\-<>0-9]+$/).

Test Cases

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

Input
Output
Brainfuck program's output

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

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

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

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

Scoring

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

Helpful Hints


Sandbox Questions

Is it tagged correctly? Should this be instead of ?

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

Convert hexagonal coordinates to index

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

Here's an example mapping for size 3:

(q,r), 3

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

maps to

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

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

i=index
s=size

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

Test cases (0-based indexing):

(q, r, s) -> i

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

Meta notes:

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

Rules

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

Score

This is , shortest answer in bytes wins.

Did you guess what was the text?

\$\endgroup\$
2
  • \$\begingroup\$ 10/10 very creative and interesting \$\endgroup\$
    – Leaky Nun
    Commented Aug 4, 2016 at 11:17
  • 2
    \$\begingroup\$ What is special about the text and means that the answers won't use the exact same techniques as previous kolmogorov-complexity questions? \$\endgroup\$ Commented Aug 4, 2016 at 13:35
0
\$\begingroup\$

Your task is to print the Champernowne constant (A033307) indefinitely.

There must be no spaces in your output and the solution with the fewest bytes wins!

\$\endgroup\$
4
  • 1
    \$\begingroup\$ 1. The Cham-whatever constant has infinitely many digits, making this challenge the same as this \$\endgroup\$
    – Leaky Nun
    Commented Aug 4, 2016 at 18:23
  • 1
    \$\begingroup\$ 2. Duplicate. \$\endgroup\$
    – Leaky Nun
    Commented Aug 4, 2016 at 18:25
  • \$\begingroup\$ @LeakyNun To prevent this being a duplicate could the challenge be "Print the Champernowne constant in base n", where the input is the base? \$\endgroup\$ Commented Aug 5, 2016 at 14:35
  • \$\begingroup\$ Also, this question isn't self contained. If you were to post an acceptably modified version of this, please explain what this constant/sequence is within the question itself, even if there is a link \$\endgroup\$ Commented Jan 20, 2017 at 1:03
0
\$\begingroup\$

Point Triangulation

(title suggestions welcome)

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

Input

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

Output

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

Examples

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

additional examples forthcoming

related

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

You must log in to answer this question.

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