18
3
Your task is to write a computer program or function that takes a list of positive integers of at least length 2 and determines if they are a "zigzag". A sequence is a zigzag if and only if the numbers alternate in being larger and smaller than the number that comes before them. For example \$[1,2,0,3,2]\$ and \$[4,2,3,0,1]\$ are zigzags but \$[1,2,0,0,3,1]\$ and \$[1,2,3,1]\$ are not.
For your decision you should output one of two different consistent values for each possibility (zigzag and not zigzag).
The code-points of your program or function must also be a zigzag itself. This means that when you take the sequence of code-points it should be a zigzag.
This is code-golf so answers will be scored in bytes with fewer bytes being better.
1A penalty for each non-zigzag in the code points might have been another approach, to allow for a wider variety of languages to participate. – ngm – 2018-07-04T15:31:54.827
7@ngm I disagree. Introducing bonuses/penalties would make users come up with multiple possible answers (e.g. short one + penalty vs long + no penalty), making answering process slower. Plus, the amount of penalty given will be quite arbitrary, meaning the scoring process wouldn't be that objective. – JungHwan Min – 2018-07-04T15:34:11.787
What about
[4,1]
is consider a zig zag? I ask because it is just a line going down and doesnt zig zag – Luis felipe De jesus Munoz – 2018-07-04T15:43:25.993@LuisfelipeDejesusMunoz Yes it is a zigzag. All of the requirements are met. – Post Rock Garf Hunter – 2018-07-04T15:45:34.710
2Should we take Unicode code points or the code points of the encoding we're using? – Dennis – 2018-07-04T15:49:45.153
1@Dennis The code-points of the encoding you are using. – Post Rock Garf Hunter – 2018-07-04T15:50:36.653
@JungHwanMin I agree that it's arbitrary, but I can't see how it's non objective. – user202729 – 2018-07-04T16:02:05.170
Code points or byte values? Are you sure? – user202729 – 2018-07-04T16:04:41.843
@user202729 It is as the challenge says code-points. – Post Rock Garf Hunter – 2018-07-04T16:06:15.363
@user202729 It would be difficult to come up with a "one-size-fits-all" penalty. There would still be room for unfairness. Plus, choosing an arbirtary number isn't objective in the first place because it would lack thorough, objective criteria.. – JungHwan Min – 2018-07-04T16:10:51.950
1@JungHwanMin Winning criteria have to be applied objectively, not chosen objectively. – Dennis – 2018-07-04T16:14:46.950
1@Dennis an arbitrarily-chosen winning criterion would still detract from the challenge, imho. Similar to abitrary I/O rules. Perhaps I chose the wrong word in my initial comment. – JungHwan Min – 2018-07-04T16:27:54.640
1@JungHwanMin All winning criteria are essentially arbitrary. We're just more used to plain code golf. A potential solution that allows all languages to compete, without providing any length-bumpiness trade-offs, would be to score submissions by penalty points and use the byte count as tie breaker. – Dennis – 2018-07-04T16:31:26.290
This is a program which find all encodings (known to Mathematica) that make the provided byte string bumpy: (won't work in some cases, see the comment) (note that your program should at least contains some unprintable character for it to be somewhat useful) – user202729 – 2018-07-04T16:35:52.903
Try it online! – user202729 – 2018-07-04T16:35:55.630
2
@Dennis of course, technically that is true. However, we already established that awarding bonuses for code-golf isn't that ideal because they detract from the main challenge. Penalty in this case would be a negative bonus.
– JungHwan Min – 2018-07-04T17:00:41.510Sometimes bonuses detract from the main challenge, sometimes they are the main challenge. In this particular case, I would say that it's the former, Dennis' solution may be applied here. (and it won't invalidate any answer as they all have optimal zigzag score) – user202729 – 2018-07-05T03:42:26.207
For convenience, some non-zigzag terms (in ASCII/Unicode): "while", "for", "reduce", "def", "function", "else", "loop", "foldl", "foldr","unless". Some zigzag terms: "map", "lambda", "until". – sundar - Reinstate Monica – 2018-07-05T14:59:55.600
I like your challenge, but my language can't zigzag. The type for a number doesn't zigzag so I can't even start. I'd suggest a bonus of -100 off bytes for zigzag code. If the language supports it, the playing field could be even as everyone can get the bonus. If the language doesn't, we can still play. – JohnWells – 2018-07-13T03:09:42.077
@JohnWells The community has historically been strongly against bonuses of any sort, and for good reason. I don't plan on changing the scoring for the challenge. However I will say a couple of other things. The first thing is that input is pretty flexible so you might be able to get around the problem you have currently with a little creative thinking. You could for example take input as a string, which might get you around the problem. However without knowing the language at hand it's hard to say. – Post Rock Garf Hunter – 2018-07-13T03:37:03.807
@JohnWells Second if you like this sort of challenge you might want to checkout other [tag:restricted-source] challenges. There are a similar challenges in terms of self identification, but each is a unique challenge and it is likely that some will be doable in your choice of language. Lastly I will point out that if you do find the code-golf part of this fun, but can't work with the restriction, you can still have fun golfing even if you can't post an answer. I always find the most fun part of code-golf to be competing with myself rather than with others. – Post Rock Garf Hunter – 2018-07-13T03:40:47.420
@gÓEûùIÿ even the string type won't zigzag. I could do it only if I don't pass an argument into the function getting the numbers via a global or I alias the type outside of the counted code. I have working 126 bytes of non-zigzag code in Kotlin. But, no legal function argument type can get me the input nor trick inputting data will zigzag. – JohnWells – 2018-07-13T04:24:50.657
1
Paste this into the developer console on TiO to help you write a bumpy program. It will check if your code is bumpy, and show available characters as you type.
– Lynn – 2019-02-22T17:52:36.087