{"action":"created","issue":{"url":"https://api.github.com/repos/exercism/x-common/issues/731","repository_url":"https://api.github.com/repos/exercism/x-common","labels_url":"https://api.github.com/repos/exercism/x-common/issues/731/labels{/name}","comments_url":"https://api.github.com/repos/exercism/x-common/issues/731/comments","events_url":"https://api.github.com/repos/exercism/x-common/issues/731/events","html_url":"https://github.com/exercism/x-common/issues/731","id":215599636,"number":731,"title":"robot-name rewrite","user":{"login":"masters3d","id":6539412,"avatar_url":"https://avatars3.githubusercontent.com/u/6539412?v=3","gravatar_id":"","url":"https://api.github.com/users/masters3d","html_url":"https://github.com/masters3d","followers_url":"https://api.github.com/users/masters3d/followers","following_url":"https://api.github.com/users/masters3d/following{/other_user}","gists_url":"https://api.github.com/users/masters3d/gists{/gist_id}","starred_url":"https://api.github.com/users/masters3d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/masters3d/subscriptions","organizations_url":"https://api.github.com/users/masters3d/orgs","repos_url":"https://api.github.com/users/masters3d/repos","events_url":"https://api.github.com/users/masters3d/events{/privacy}","received_events_url":"https://api.github.com/users/masters3d/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":26,"created_at":"2017-03-21T01:01:44Z","updated_at":"2017-05-10T04:43:28Z","closed_at":null,"body":"Currently the robot-name exercise suggests \r\n1) a Robot can assign itself a name upon boot up. \r\n2) a Robot can reset its name with out ever giving itself a previously used name.\r\n3) a Robot (Optionally) can never reuse a name previously assigned to any robot.  \r\n\r\nThis `name` is more of a serial number. \r\nIn a more realistic scenario:\r\n1) a Robot would never get shipped out without a serial number. More than likely a factory would have a `random serial number generator` which would assign a serial number to a new Robot.\r\n2) a Robot would never be able to give itself a new \"serial number\", unless this robot is at the factory where a `random serial number generator` could give it a new serial number and identity. \r\n3) By having a central registry at the factory, a robot could truly have a unique name across all created robots.\r\n\r\nMost implementations create a class called `Robot()` which implements most of the description. All good. The issue is this paragraph:\r\n\r\n> Your solution should not allow the use of the same name twice when avoidable. In some exercism language tracks there are tests to ensure that the same name is never used twice.\r\n\r\nOut of [26](http://x.exercism.io/v3/problems/robot-name/todo) implementations only 6 decided to test for uniqueness across all ever created robots. \r\n\r\n| name  | hints or comments |\r\n| --- | --- |\r\n| [go](https://github.com/exercism/xgo/tree/master/exercises/robot-name) | provides two different implementations and tests. |\r\n| [scala](https://github.com/exercism/xscala/blob/master/exercises/robot-name/src/test/scala/RobotNameTest.scala) | ```  // Making this test pass is an optional extra exercise, should you want more of a challenge. It's ignored by default, to make it run, simply change \"ignore\" below to \"it\". There are 26^2 * 1,000 = 676,000 possible robot names - you have to ensure that none are repeated. The Robot code needs to be efficient enough to allow all 676,000 unique names to be generated.```|\r\n| [xocaml](https://github.com/exercism/xocaml/blob/master/exercises/robot-name/test.ml) |```Optionally: make this test pass. There are 26 * 26 * 10 * 10 * 10 = 676,000 possible Robot names. This test generates all possible Robot names, and checks that there are no duplicates. It's harder to make pass than the other tests, so it is left as optional. To enable it, uncomment the code in the run_test_tt_main line at the bottom of this module.```|\r\n| [php](https://github.com/exercism/xphp/blob/master/exercises/robot-name/robot-name_test.php) | none |\r\n| [ecmascript](https://github.com/exercism/xecmascript/blob/master/exercises/robot-name/robot-name.spec.js#L23) | none |\r\n| [javascript](https://github.com/exercism/xjavascript/blob/master/exercises/robot-name/robot-name.spec.js#L29) | none |\r\n\r\n**I am proposing to remove the optional test case from the description.**\r\n1) It simplifies new implementations. \r\n2) It would require tracks that implement the optional test to annotate their test case like Ocaml and Scala.\r\n\r\nI've had a long conversation on the JS/ ES track about [this](https://github.com/exercism/xecmascript/issues/263). Initially I thought it would be better to remove these optional test cases (from the implementations) but I think the issue is that they are not annotated. \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/exercism/x-common/issues/comments/300372166","html_url":"https://github.com/exercism/x-common/issues/731#issuecomment-300372166","issue_url":"https://api.github.com/repos/exercism/x-common/issues/731","id":300372166,"user":{"login":"kytrinyx","id":276834,"avatar_url":"https://avatars2.githubusercontent.com/u/276834?v=3","gravatar_id":"","url":"https://api.github.com/users/kytrinyx","html_url":"https://github.com/kytrinyx","followers_url":"https://api.github.com/users/kytrinyx/followers","following_url":"https://api.github.com/users/kytrinyx/following{/other_user}","gists_url":"https://api.github.com/users/kytrinyx/gists{/gist_id}","starred_url":"https://api.github.com/users/kytrinyx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kytrinyx/subscriptions","organizations_url":"https://api.github.com/users/kytrinyx/orgs","repos_url":"https://api.github.com/users/kytrinyx/repos","events_url":"https://api.github.com/users/kytrinyx/events{/privacy}","received_events_url":"https://api.github.com/users/kytrinyx/received_events","type":"User","site_admin":true},"created_at":"2017-05-10T04:43:28Z","updated_at":"2017-05-10T04:43:28Z","body":"> What's so especial about RobotName that shields it from depreciation?\r\n\r\nJust a quick note that I made up the robot name exercise on a whim, it's not special, and if it's problematic I would have absolutely no problem removing it for a better exercise (e.g. the license plate exercise sounds like it would be easier to define and explain than the kind of ambiguous robot name).\r\n\r\nI'm not going to voice any particular opinion about the options here, I think that you all are doing a better job than I am of going through and figuring out what the points of pain are with this exercise, I just wanted to remind you all that there is nothing inherently special about the exercise, and that removing it completely is a valid option among all of the given options."}}
{"actor":{"display_login":"kytrinyx"}}