I have found myself asking a good deal of questions with a similar theme. I enjoy asking questions in which answers are required to implement a function with a number of characteristics that are well defined but do not isolate a specific function that needs to be implemented. I thought it might be a good idea to make a tag for such questions.

Here are some examples of questions I have asked that would be tagged with the proposed tag:

Should we make this tag? Is a good name? What other questions might be tagged with this tag?

  • \$\begingroup\$ I see where you are going with this, but I don't like the word "function". In my mind it's challenges where there isn't a specific task to do, but rather a category of allowable tasks. I'm not sure that "task" is the word either, but the word "function" implies that full programs are disallowed \$\endgroup\$ Commented Sep 12, 2017 at 15:46
  • \$\begingroup\$ @NathanMerrill I disagree that the name implies full programs are disallowed. After all full programs are functions too. \$\endgroup\$
    – Wheat Wizard Mod
    Commented Sep 12, 2017 at 19:50
  • \$\begingroup\$ I'm not yet sure what to call it: Those challenges are about implementing or satisfying some requirements or axioms - or finding concrete examples of a definition. I agree with Nathan that I'd eliminate the word function from the name. But other than that I think that it would be nice to have such a tag. \$\endgroup\$
    – flawr
    Commented Sep 12, 2017 at 20:47
  • 3
    \$\begingroup\$ I think an edge case for answers to consider is my Print some JSON challenge. It doesn't require any processing, but it does have a large range of possible values within a set of guidelines. \$\endgroup\$ Commented Sep 12, 2017 at 21:18
  • 1
    \$\begingroup\$ To go along with @NathanMerrill, I think all questions from category 2 here could also fit within "has a number of characteristics that are well-defined but does not isolate a specific <x> that needs to be implemented." Perhaps expand the tag to apply to all questions of this sort, no matter what <x> is? \$\endgroup\$ Commented Sep 13, 2017 at 0:39

3 Answers 3


The intended purposes of tags are to allow people to highlight questions in areas of interest, hide (or at least deemphasise) questions in areas of non-interest, and provide some hints to the recommendation system (i.e. the "Related" sidebar).

However, people sometimes think that tags are the primary "on-topic" system: if it fits then it must be suited for the site.

I think that the questions you give as examples are interesting questions, and quite a nice way to add something to the "puzzle" side of PPCG: although they're , working out how to even begin answering is where half of the fun is. And certainly they do seem to group together in a way which fits the intended purposes of a tag.

But I would be very wary of the suggestions in comments and Nathan's answer for a tag with a broad name and scope. If we create a tag which people will claim as conclusive evidence that their over-broad under-specified question is on topic because " questions need an open spec" then I think the disadvantages will end up outweighing the advantages.

On the subject of the name, truly has it been said that naming things well is a hard problem. Your proposal of seems to me too hard to pin down. was my first thought, but is too specific. Maybe it will inspire someone towards the right name.

TL;DR: in principle a good idea provided that the scope is kept narrow, but the name needs some work.

  • \$\begingroup\$ I agree with this answer: We don't want this tag to be a way to get too-broad questions into the site. That said, "too-broad" is a subjective criterion, so it's impossible to precisely define the line between "too broad" and the tag. If the tag is too specific, though, it won't apply to many answers, reducing its usefulness. \$\endgroup\$ Commented Sep 13, 2017 at 15:59
  • \$\begingroup\$ I'm definitely in favor of a smaller scope than that suggested by @NathanMerrill. I don't think that print some JSON should be tagged with function-class or foo or whatever we call it. \$\endgroup\$
    – Wheat Wizard Mod
    Commented Sep 13, 2017 at 16:06

A "trait" is a characteristic or proof that your output/submission must follow. Example traits include:

  • Your output must be palindromic
  • Your submission must be bijective: (there is one output for each input, and vice versa)

"Validity" means that the check for whether a submission is acceptable is completely based on these traits. There should be multiple ways for people to fulfill these traits.

This does not include output that is based on random values. For example, "You must output a number from 1 to N with a uniform distribution". This technically allows a variety of answers, but if there's only 1 output if the RNG was an input into the function, then the tag doesn't apply.

Trait isn't really a common word around here. I understand that. However, I don't think we've ever really talked about these things before, so we need a new term.

  • \$\begingroup\$ To me, just reading the tag, this almost sounds like a duplicate of decision-problem, which is a very different category. I don't think we want something that "close" together. \$\endgroup\$ Commented Sep 15, 2017 at 13:24
  • \$\begingroup\$ This sounds like a superset of restricted-source \$\endgroup\$
    – Okx
    Commented Sep 19, 2017 at 16:06
  • \$\begingroup\$ restricted-source is drastically different, as that is related to the actual source code. Mine doesn't care what your source code looks like, only what the code does. \$\endgroup\$ Commented Sep 19, 2017 at 16:18

This is

Four years after this was asked, was created in response to this question about cleaning up the tag. It is a slightly broader version of the proposed tag.

The tag seems to be doing just fine.


You must log in to answer this question.

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