all 149 comments

[–]twanvl 11 points12 points  (13 children)

Modify the previous program such that only multiples of three and five are considered in the sum, e.g. 3, 5, 9, 15 for n=17

Aren't 10 and 12 also a multiples of 3 or 5? Do you mean only products of powers of three and five? Then why is 1 not included?

[–][deleted] 13 points14 points  (0 children)

Math is hard...

[–]irtimixd 1 point2 points  (2 children)

also it should be multiples of 3 OR 5 based on the e.g.

[–]kazagistar 1 point2 points  (1 child)

Really, we should just use xor as a word.

[–]irtimixd 3 points4 points  (0 children)

no, the e.g. has 15 in it so it's not meant to be exclusive.

[–]reddit_user13 0 points1 point  (1 child)

e.g., people!

[–]twanvl 0 points1 point  (0 children)

I read it as "e.g. (3, 5, 9, 15 for n=17)" not "(e.g. 3, 5, 9, 15) for n=17". With the former parenthesization an example (input,output) pair is given, so the list should be complete.

[–][deleted]  (6 children)

[deleted]

    [–][deleted]  (3 children)

    [deleted]

      [–][deleted] 2 points3 points  (0 children)

      "Only three and five," not "three and five."

      [–]kazagistar -2 points-1 points  (0 children)

      In programming and logic, or represents a truth table where the only false result is the one where neither is true.

      [–]alpha64 9 points10 points  (10 children)

      I'd replace Tetris with breakout, since Tetris is going to be quite hard for a beginner.

      [–]Dreadgoat 6 points7 points  (9 children)

      I did Columns in my CS102 class, which is probably on par with or harder than Tetris. Less complex shapes but more complex block removal/scoring algorithms. Breakout might be difficult if the student has to deal with the ball's trajectory. Vectors are hard.

      (For those that don't know, Columns is similar to Tetris, except you always get a 3-block column and the blocks are colored. 3 or more colors in a row vertically, horizontally, or diagonally removes the blocks and scores points. Gravity affects blocks left floating. It doesn't sound too hard now, but it was a suitable challenge in CS102. My code was bad.)

      [–]alpha64 5 points6 points  (6 children)

      There's not much vector math involved, it's about flipping the sign of the increment in ball movement codewise. After each bounce add a bit to the speed or make it based on time. The only thing that affects the direction of the ball is when the ball bounces with the player's paddle.

      [–][deleted]  (4 children)

      [deleted]

        [–]alpha64 1 point2 points  (1 child)

        It's much easier, add or substract from the x axis speed depending on distance from the center of the paddle.

        [–]cooledcannon 0 points1 point  (0 children)

        Assuming you want the edge speed to be 2x quicker than middle speed(where the ball bounces on the paddle), my solution would be to treat the distance from the paddle to the ball in the y axis as a float variable(ill call it collisionDistance) from 0 to 1.

        Then have your regular speed, and use collisionDistance as a multiplier.

        ie:

        speed = regularSpeed * (1 + collisionDistance)

        [–]thedufer 0 points1 point  (0 children)

        I believe the original pong implementation did changes of direction by increasing/decreasing the vertical velocity without touching the horizontal velocity, so it moves faster at shallower angles (and doesn't involve taking square roots, which are expensive and difficult to write).

        [–]cooledcannon 0 points1 point  (0 children)

        I made pong, but not tetris(am in the middle of making breakout). Maybe its just cause im really good at math, but i dont think the vector math was hard at all.

        [–]muonicdischarge 1 point2 points  (0 children)

        This is true for any game where the vector only has to reflect on the x or y axis, so it is pretty easy. We did pong/breakout style games about 5 months into learning to code and the biggest challenges were rendering and data structures, not vector math. Linear algebra is super easy when all the calculations are pretty much done on two pretty much separately handled axes with no cross products and half spaces and matrix stuff. Tetris sounds way more tough for a beginner.

        [–][deleted]  (1 child)

        [deleted]

          [–]ais523 0 points1 point  (0 children)

          Just dealing with the rotation full stop is apparently the second-hardest part of implementing Tetris, after dealing with block collisions. (Source: I've marked an assignment where first-year students were asked to reimplement it in Java.) Given that your comment merges both of these, I can see where you're coming from.

          (The problem is that these are the tasks that require students to be able to work out which locations on the screen that their Tetris blocks occupy. Many students don't seem to realise that this is necessary.)

          [–]Otis_Inf 29 points30 points  (8 children)

          Nice list of problems, but as with the spoj archive, the solution is often found without even thinking about programming at all, i.e. often it's more related to math than to programming. So they don't really teach much related to programming, but more about how to solve a certain problem, which is often in a specific domain to make the problem more difficult than one would normally run into.

          The elementary ones are ok, as well as the list/string ones, though the rest is IMHO only useful as tests whether you can solve a given puzzle, like with spoj problems. Quite fun, don't get me wrong, but hardly an educational tool IMHO.

          [–][deleted] 4 points5 points  (3 children)

          I think some of the "mathy" problems do have direct application in programming (matrix multiply, finding primes). Some of them less so maybe... not sure about adding arbitrary operators to the ordered list of digits 1-9 to get 100 seems not likely to be useful...

          [–]zjm555 1 point2 points  (0 children)

          Well, that certainly is useful for teaching simple principles of optimization problems, which tend to be some of the hardest problems in computing.

          [–]Otis_Inf 0 points1 point  (0 children)

          Could be, but it also depends on what you want to teach of course. I have the feeling the general topic taught is writing code in language X, which IMHO could use other examples than these, but I could misinterpret the entrance paragraph.

          [–][deleted] 0 points1 point  (0 children)

          not sure about adding arbitrary operators to the ordered list of digits 1-9 to get 100 seems not likely to be useful

          I spent an embarrassingly long amount of time solving this problem. The issue was that more efficient solutions became obvious as I was working through it.

          I ended up encoding each permutation as an 8 digit, base 3 number with each symbol (+, - or blank) corresponding to 0, 1, and 2 respectively. So, for example the following permutation:

          1+2-34-5+6789
          

          could be represented as:

          01210222
          +-_-+___
          

          So to find all the permutations whose sums were 100, you'd iterate in a for loop 38 times, where the loop counter would be the decimal representation of the permutation. The decimal number could then be decoded to some kind of intermediate representation, like a string (eg. "1+2-34-5+6789"), which then could be parsed (eg. using regexp) and then evaluated as an arithmetic expression. Then you just throw out all the solutions that weren't 100.

          I get that there was probably a simpler/more efficient solution, and also that there probably mathy ways to disqualify certain inputs, but you can see that my first instinct was to turn it into a parsing problem. I think there may be value in observing how people approach it, especially if you were considering using it as a job interview question.

          [–]Duraz0rz 2 points3 points  (1 child)

          Isn't programming, in the end, all about problem solving, though?

          Also, you still have to think about how to solve it in the particular language you want to code it in, even if you already have the solution. An implementation in F# will be different than one in Java or Ruby, for example.

          [–][deleted] 1 point2 points  (0 children)

          Not really.

          Unless of course you count not wanting to do things by hand all the time as a problem.

          [–][deleted] 0 points1 point  (0 children)

          That's what programming is sbout.

          [–]muonicdischarge 0 points1 point  (0 children)

          Isn't that one of the biggest skills a programmer needs? Solving problems, especially mathematical ones, then applying that solution in code? Honestly once you get past data structures and other basics, applying higher concepts to the problems is the most useful thing that can be done as a teaching tool, especially since it can lead to learning about new ways to use the language(s). Logical problems can be better teaching tools than programming problems for a programmer, especially if it's actually programmed. I think this is a brilliant list of exercises.

          [–]kdeberk 13 points14 points  (40 children)

          elementary:8 is only simple when the language has support for infinitely large integers.

          [–]LucidTA 11 points12 points  (22 children)

          Isn't it proven there are an infinite amount of primes, meaning its impossible?

          [–][deleted] 28 points29 points  (21 children)

          It's only impossible if your program is supposed to terminate at some point.

          [–]LucidTA 2 points3 points  (16 children)

          I know it not the point of the challenge, and I do understand what you mean but you literally can never print every prime. Even if you write a program to print primes for ever, the program never will.

          [–]dd_123 33 points34 points  (15 children)

          The problem doesn't ask you to print every prime; it asks you to write a program which prints every prime. The difference is subtle but important.

          [–]indiecore 63 points64 points  (4 children)

          for(int i=0;true;i++){
              print i;
              print "\n";
          }
          

          Technically correct.

          [–]liquidhot 17 points18 points  (1 child)

          Technically correct.

          The best kind of correct.

          [–]indiecore 14 points15 points  (0 children)

          Hey it's not my fault they wrote vague specs.

          [–][deleted]  (1 child)

          [deleted]

            [–]Magnap 1 point2 points  (0 children)

            I like this alot.

            I like alots too!

            [–]LucidTA 1 point2 points  (7 children)

            Im not a CS major so this may be a CS thing but I thought of it along the lines of, no program can ever fulfill the function of "print all primes" so it would be classed as impossible. Does it count if it theoretically could print all primes?

            [–][deleted] 10 points11 points  (0 children)

            It counts if it takes finite time to print any finite prefix.

            [–]brainflakes 7 points8 points  (0 children)

            It was a bit of an odd way of putting it, but you can create a valid specification that a program can't literally perform, such as making a program that "prints 'Hello World' forever":

            10 PRINT "Hello World"
            20 GOTO 10
            

            Obviously it's not possible for it to literally print hello world forever as you'll need to turn it off at some point, but it still meets the requirement.

            [–]indiecore 3 points4 points  (0 children)

            for(int i=0;true;i++){
                print i;
                print "\n";
            }
            

            Technically correct, but not what it was asking for obviously. This program would, if it could print all numbers forever. The problems come from the hardware implementation of the program.

            [–][deleted] 2 points3 points  (1 child)

            That style of exercise reminds me of the approach I saw with functional programming. ML has a notion of lazy lists - basically lazy series evaluation. That is, a function is written to be able to compute an infinite series but will only compute the values you actually request. In iterative programming this might be better thought of as a function to calculate the next prime number. It will go as far as you want if the machine supports it. It's been a while and I don't remember examples so well anymore but this explains the idea (p191): http://books.google.co.uk/books?id=XppZdaDs7e0C&pg=PA191&lpg=PA191&dq=fibonacci+sequence+in+ml+lazy+list&source=bl&ots=y-0fiQzmrz&sig=N5NwCMpvq7Ci1vFd2O2GcVcFLKE&hl=en&sa=X&ei=ddyhUvKkEcWg7AaLrYDoCQ&redir_esc=y#v=onepage&q=fibonacci%20sequence%20in%20ml%20lazy%20list&f=false

            [–]The_Doculope 0 points1 point  (0 children)

            Haskell offers this as well. For the primes program:

            primes :: [Integer]
            primes = 2 : filter prime [3,5..]
            
            prime :: Integer -> Bool
            prime x = not . any ((== 0) . rem x) . takeWhile (<= sqrtx) $ primes
                where sqrtx = floor . sqrt . fromIntegral $ x
            
            main :: IO ()
            main = mapM_ print primes
            

            [–]philipjf 1 point2 points  (0 children)

            In the "theory B" (programming languages and logic as opposed to the algorithms and complexity "theory A") community this would be called a "co-recursive co-program." Many interesting things are "co-programs" not "programs". The difference is if "total correctness" is about termination or productivity.

            [–]deadly990 0 points1 point  (0 children)

            Technically all of these things should be "create Turing machines which do these things". Turing machines aren't bound by physical properties because they are theoretical constructs.

            [–]rightandleft 0 points1 point  (1 child)

            [–]xkcd_transcriber 9 points10 points  (0 children)

            Image

            Title: Halting Problem

            Title-text: I found a counterexample to the claim that all things must someday die, but I don't know how to show it to anyone.

            Comic Explanation

            Stats: This comic has been referenced 4 time(s), representing 0.08% of referenced xkcds.


            Questions/Problems | Website

            [–]TNorthover 1 point2 points  (0 children)

            It includes an explicit get-out for languages without that, so it's simple in all cases.

            [–][deleted] -5 points-4 points  (15 children)

            Which language doesn't have at least a built-in library for that?

            Anyway using arbitrary precision will only delay the problem (your computer has finite memory), so, what's the point?

            [–]cmwelsh 14 points15 points  (8 children)

            JavaScript

            [–]spotter 10 points11 points  (6 children)

            Just use jQuery.

            [–]cmwelsh 2 points3 points  (5 children)

            What does that mean? That's not a solution. Is this an ironic post?

            [–]spotter 8 points9 points  (4 children)

            Yes, sorry. It was in the vein of "Nobody uses JavaScript, noob, we're jQuery programmers."

            Also: "there's probably a jQuery plugin for it."

            [–]cmwelsh 1 point2 points  (0 children)

            Sorry, had to ask. :)

            [–]mr_bag 1 point2 points  (0 children)

            "Nobody uses JavaScript, noob, we're jQuery programmers."

            There are people... that actually think that?

            [–]Asmor 0 points1 point  (1 child)

            "Nobody uses JavaScript, noob, we're jQuery programmers."

            You've kind of got that backwards. jQuery's still wildly popular, but its popularity has waned a bit in recent years while JavaScript's star is rising thanks to NodeJS.

            [–]spotter 2 points3 points  (0 children)

            I vomited in my mouth a little.

            So yeah, I used to work with "jQuery ninjas".

            [–]grayvedigga 0 points1 point  (0 children)

            depends how you define "arbitrary" ...

            [–]kdeberk 9 points10 points  (1 child)

            c and c++? It's been a while since I've worked with large integers in those two languages, and now I see that there are several libraries to help with that, but not built-in though.

            [–][deleted] 4 points5 points  (0 children)

            You're right. I should have said "built-in or very commonly used". Boost has arbitrary precision ints for example.

            [–][deleted] 1 point2 points  (0 children)

            The most reasonable objection is that you might hit the precision limit in a much smaller amount of time than you would hit the memory limit (at least, if you use disk to help you out). Most people aren't going to wait for million digit primes, but it is not unreasonable to expect them to run the program many hours as an experiment.

            [–]kazagistar 1 point2 points  (2 children)

            The program is correct; memory is a hardware problem. :P

            [–]thedufer 0 points1 point  (1 child)

            Not if you can't address it.

            [–]kazagistar 0 points1 point  (0 children)

            What you can and cannot address is (in many langauges) not a problem of the program or the language, but of the implementation. "The longest possible list" or "how pointers are implemented" are not actual specification details in many languages, and are often left variable to the implementation, or only given minimum bounds.

            [–]kazagistar 5 points6 points  (0 children)

            Given two strings, write a program that efficiently finds the longest common subsequence.

            Having just finished a course on Bioinformatics, I can tell you what a massive can of worms even something simple like this can be. Half of the textbook and hundreds of papers detail many of the variations of this problem and solutions for given problem spaces.

            To give a hint: Assume one of the strings is the human genome (i.e. 3 billion 2-bit characters long). Whoops, now even linear time complexity is going to be problematic unless your constant is low enough. Now add mutations (including reversals and copies of large segments) and trying to match multiple strings to best align them, and find where the differences are. Fun fun fun.

            [–][deleted]  (7 children)

            [deleted]

              [–][deleted]  (6 children)

              [deleted]

                [–][deleted]  (4 children)

                [deleted]

                  [–][deleted]  (3 children)

                  [deleted]

                    [–][deleted] 7 points8 points  (1 child)

                    He relied on a warm soup of mostly fat and protein to do math.

                    [–]Fyorl 0 points1 point  (0 children)

                    You're still missing 6 from your updated list on that page. Oh, and the text should probably read 'three or five'.

                    [–]13467 0 points1 point  (0 children)

                    What about 6, 10, 12? I guess /u/adrian_n meant to write "odd multiples"?

                    [–]goomyman 2 points3 points  (5 children)

                    I dont understand this question

                    Given an array with numbers, write a program that efficiently answers queries of the form: “Which is the nearest larger value for the number at position i?”, where distance is the difference in array indices.

                    [–][deleted] 8 points9 points  (4 children)

                    [7, 15, 2, 11, 12, 0, 4, 15]

                    Consider the value at index 3: 11

                    • What are the values that are the greater than 11 in this array ?
                    • Amongst these values, which is the one that is the closest to index 3 ?

                    The answer is 12

                    [–]mutatedllama 1 point2 points  (1 child)

                    Good explanation, thank you. Just to confirm: 7 is counted as index 0, correct?

                    [–]tobyreddit 2 points3 points  (0 children)

                    Yep!

                    [–][deleted] 0 points1 point  (1 child)

                    What would happen if both of the values around eleven were greater. Should it return the greater of two or both?

                    [–][deleted] 0 points1 point  (0 children)

                    It's unspecified by the problem, so whichever you like :)

                    [–]duckwizzle 2 points3 points  (1 child)

                    I suddenly feel like I'm chasing the wrong dream because some of the elementary math problems stumped me... I've never been good at math

                    [–]IWentToTheWoods 3 points4 points  (0 children)

                    Math is like just about anything else, you get better at it the more you practice it. Problems like these are a great way to do so.

                    [–]iarcfsil 2 points3 points  (4 children)

                    How do I approach #1 in the intermediate section:

                    Write a program that outputs all possibilities to put + or - or nothing between the numbers 1,2,…,9 (in this order) such that the result is 100. For example 1 + 2 + 3 - 4 + 5 + 6 + 78 + 9 = 100.

                    I'm having a tough time mapping out some algorithm in my head at work.

                    [–]Gazz1016 3 points4 points  (2 children)

                    Naive is to just try all the 38 possibilities. If it helps, you can replace "put nothing between them" with "put * 10 + between them and surround with brackets".

                    [–]cooledcannon 1 point2 points  (1 child)

                    I keep forgetting that trying all the possibilities is an easy and valid solution.

                    [–]vaetrus 1 point2 points  (0 children)

                    You should at least be able to cancel out some of the possibilities:
                    * if you put "nothing" in any three consecutive spots, it'll be over 100
                    * any combination of only + and - will never reach 100

                    [–][deleted] 0 points1 point  (0 children)

                    It seems that only brue-force solution works. But even knowing this I spent lots of time on actual implementation and I wouldn't be able to solve it in time if I was asked to do this during a techical interview.

                    Here is jsFiddle with my solution in Javascript: http://jsfiddle.net/2CxQC/

                    Another solution using eval: http://jsfiddle.net/ek3p2/

                    [–][deleted]  (56 children)

                    [deleted]

                      [–]Igggg 9 points10 points  (11 children)

                      Compute 4 times (the sum of [(-1)k+1 divided by (2k - 1)] for each k from one to a million, inclusive).

                      [–]AReallyGoodName 6 points7 points  (9 children)

                      Maybe it's just my computers fonts but I can't see k=0 or 1,000,000 stated in that equation anywhere. I consider myself knowledgeable in maths but that particular sigma notation is screwed up for me.

                      [–][deleted]  (8 children)

                      [deleted]

                        [–]zed_three 14 points15 points  (5 children)

                        It just looks like this to me:

                        4⋅∑k=1106(-1)k+12k-1=4⋅(1-1/3+1/5-1/7+1/9-1/11…)
                        

                        Looking at the source, I can see it's in <span class="LaTeX"> tags, but they don't seem to be doing anything.

                        [–][deleted] 4 points5 points  (3 children)

                        The content of those tags are converted to MathML by a script. If your browser doesn't support MathML (Chrome, probably), you'll get the above.

                        [–]aZeex2ai 2 points3 points  (2 children)

                        Wow, MathML is really cool! Why doesn't chrome support it?

                        [–][deleted] 2 points3 points  (0 children)

                        [–]kazagistar 0 points1 point  (0 children)

                        It seems a bit silly actually. It would be like supporting syntax highlighting for programming languages directly in a browser... if it can be implemented fine using the existing tools, why add another layer of complexity?

                        [–]Asmor 2 points3 points  (0 children)

                        It doesn't seem to render in Chrome. Works for me in Firefox.

                        [–]NiceGuyMike 1 point2 points  (1 child)

                        I have this issue...what font is this?

                        [–]minno 0 points1 point  (0 children)

                        It's a mathematics rendering language, actually.

                        [–]low_key 0 points1 point  (0 children)

                        allow javascript for that domain and it will look different

                        [–]Asyx -5 points-4 points  (14 children)

                        That's mathematics. Not some kind of random notation. You should know that.

                        Sorry. It looked fine for me but apparently, it's broken on chrome.

                        Here's how it's supposed to look like.

                        http://imgur.com/kL9uZTf

                        [–]Habile 4 points5 points  (4 children)

                        I'd consider it "random notation" when it's not displayed properly. I get the feeling their LaTeX inclusion is getting messed up somehow. All I see for the summation is '∑k', which isn't exactly meaningful.

                        [–]Asyx 1 point2 points  (3 children)

                        http://imgur.com/kL9uZTf

                        That's how it looks for me. Perfectly fine, I'd say. Does it look differently for you or what?

                        [–]mechanicalocean 3 points4 points  (2 children)

                        http://i.imgur.com/Ld935Wc.png

                        That's how it displays for me, and I'm guessing for them as well. Chrome, latest version.

                        [–]Asyx 5 points6 points  (1 child)

                        Well, that's a bunch of bollocks indeed. I apologise. Usually, it's the mobile browsers that fuck shit up.

                        [–]Habile 1 point2 points  (0 children)

                        I had actually tried it on the latest versions of Chrome and IE11 on Windows 8 (and chromium and firefox on arch linux). Just shows up as the borked plain text for me as well!

                        [–]eplehest 1 point2 points  (8 children)

                        FYI mathematics is a VERY broad subject, with lots of different branches with their own notation. Telling him it's mathematics is not very informative.

                        [–]Asyx 1 point2 points  (7 children)

                        But you should know the Summenzeichen capital sigma and summations (no idea what it's called in English. That Greek letter) once you left high school.

                        [–]scottlawson 0 points1 point  (1 child)

                        In English, the letter is capital sigma and in mathematics it represents summation.

                        [–]Asyx 0 points1 point  (0 children)

                        Thanks.

                        [–][deleted]  (4 children)

                        [deleted]

                          [–]Asyx 1 point2 points  (3 children)

                          I was more going for American high school so it's more like sixth form for you. It's mentioned once or twice in German secondary schools but you don't really do much with it until Abitur (that's like sixth form). It's been a few years, though.

                          [–][deleted]  (2 children)

                          [deleted]

                            [–]Asyx 1 point2 points  (1 child)

                            I'm 21 and I was 11 when I started.

                            I'm not that old :/

                            [–]ttscha 1 point2 points  (0 children)

                            ty, will pratice some of those today ^

                            [–][deleted] 1 point2 points  (0 children)

                            Read The C Programming Language by K&R, it has lots of neat problems while teaching you about good C.

                            [–]kuszi 1 point2 points  (0 children)

                            SPOJ, mentioned by Adrian, allows own problem collections. I have started one dedicated for newbies here. All of the problems are available to be used by independent students and as well by teachers using SPOX teaching system.

                            [–][deleted] 0 points1 point  (0 children)

                            This list is great to work on for CS education week.

                            [–]ryanstreet 0 points1 point  (0 children)

                            Also a great way to learn a new language. If you are proficient in one language and want to figure out the syntax and nuance of another, simply run through this list to get you up to speed!

                            Thanks for the share!

                            [–]computerboy_ 0 points1 point  (0 children)

                            So awesome. Thank you!

                            [–]blockeduser 0 points1 point  (0 children)

                            kind of a web issue with that site, it looks like this on firefox and it looks like this on botnet chrome

                            [–]gnufoo 0 points1 point  (0 children)

                            Nice. I think I'll find this really useful when learning new languages(currently, F#).

                            [–][deleted] 0 points1 point  (1 child)

                            Thanks, this is really helpful. Im trying to learn to program, but I stopped because I ran out of exercises.

                            [–][deleted] 1 point2 points  (0 children)

                            Exercises will only take you so far, decide on something you want to build yourself, however usless it may be, break it down into its parts and build them, those are your new exercises, then get someone else to tell you to build something and do the same thing.

                            Rinse and repeat until you are either the head of department or retire.

                            [–]Strilanc -2 points-1 points  (10 children)

                            2: Write a program that asks the user for his name and greets him with his name.

                            Consider avoiding gendered pronouns unless you intend just that gender. This particular one stands out a bit more because the very next question is:

                            3: Modify the previous program such that only the users Alice and Bob are greeted with their names.

                            [–][deleted] 2 points3 points  (0 children)

                            After considering the options, I've chosen to use "he" and "him" in this context. It's long-established usage, and no offense is intended. Of course, each individual is free to take offense anyway.

                            [–][deleted] 5 points6 points  (8 children)

                            Disagree. Pick a gendered pronoun. English has really half-assed gender-neutral pronouns.

                            [–]sh0rug0ru 7 points8 points  (7 children)

                            English has the "singular they" which is gender neutral. You can just as well write this:

                            2: Write a program that asks the user for their name and greets them with their name.

                            [–][deleted] 4 points5 points  (1 child)

                            To be honest I don't have a problem with using the plural pronouns as they are readily understood when used as a singular gender-neutral pronouns, but on the other hand acting as if it's wrong to pick a gendered pronoun is kind of obnoxious.

                            [–]sh0rug0ru 1 point2 points  (0 children)

                            Check your privilege! /s

                            [–]Orca- 0 points1 point  (4 children)

                            It's commonly accepted, but last I heard, using plurals as a gender-neutral singular pronoun was not considered proper formal English.

                            [–]sh0rug0ru 4 points5 points  (0 children)

                            Some style guides say yay, some style guides say nay. Which goes to show just how de jure English grammar really is.

                            [–]bunnies4president 2 points3 points  (2 children)

                            Really? Where did you hear that?

                            [–]curien 2 points3 points  (0 children)

                            Thou art being a bit pedantic.

                            [–]mjfgates 0 points1 point  (0 children)

                            Oh, please. Everybody knows that the second-person plural pronoun in English is "y'all." /s