{"id":23380758,"url":"https://github.com/softonic/katarxjava","last_synced_at":"2025-04-08T07:43:49.703Z","repository":{"id":42408574,"uuid":"58729264","full_name":"softonic/kataRxJava","owner":"softonic","description":null,"archived":false,"fork":false,"pushed_at":"2019-12-10T08:28:09.000Z","size":19,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-02-14T04:51:17.838Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/softonic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-13T10:30:55.000Z","updated_at":"2019-12-10T08:28:09.000Z","dependencies_parsed_at":"2022-09-01T01:01:26.898Z","dependency_job_id":null,"html_url":"https://github.com/softonic/kataRxJava","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softonic%2FkataRxJava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softonic%2FkataRxJava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softonic%2FkataRxJava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softonic%2FkataRxJava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/softonic","download_url":"https://codeload.github.com/softonic/kataRxJava/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247801195,"owners_count":20998331,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-21T20:18:31.192Z","updated_at":"2025-04-08T07:43:49.672Z","avatar_url":"https://github.com/softonic.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"kataRxJava\n======\n\nThis repo a simple project with three diferent exercises. Each exercise has its own tests specified. There are also to branches:\n- *master:* full source code with the sugested solutions.\n- *kata:* full source code with some TODO comments with details about to be implemented there.\n\nTry to solve all the exercises of the *kata* branch and after that compare your solution with the one in the *master* branch.\n\nEach exercise is described in the following sections.\n\nHanoi Towers\n------\nThis is the famous problem of moving a set of disks with diferent sizes from one source pole to a destination pole using an auxiliar pole. The only one restriction applied is that it could be never a situation wether a disk A larger than a disk B sitting above disk B. More details of the problem here: https://en.wikipedia.org/wiki/Tower_of_Hanoi\n\nThe main goal is to solve this problem using RxJava.\n\nConsensus\n------\n\nIn this exercise you have 3 different voters that should randomly emit a boolean response. Each voter has a max time of 1s to give his answer. After that time, a resolution should be emitted, just picking the most voted response. Each voter will write its answer in a journal. The final resolution will also been written into the journal.\n\nTake a look at the comments and follow them and give a solution using RxJava.\n\nRandom Family\n------\nTake a look at the Random User API. It's just an API that allows you to create random users. The goal of this exercise is just create a new service for creating random families, where a family is composed by:\n\n- A father.\n- A mother.\n- An arbitrary list of sons.\n- An arbitrary list of daughters.\n\nKeep in mind to follow the Anglo-saxon tradition for naming conventions related to the last name of each one of the members of the family.\n\nGeneral Suggestion\n------\nAs RxJava is mostly used in environments driven by events, and the proposed exercises follows an imperative paradigm, I suggest you to avoid using ``Subscriber``'s and use the ``toBlocking`` method, allowing to execute any given observable composition inplace, as shown in the bellow code:\n\n`````java\nObservable\u003cInteger\u003e obs = Observable\n    .range(0, 10)\n    .map(...);\nList\u003cInteger\u003e result = obs\n    .toList()     // Required only when result should be a list.\n    .toBlocking()\n    .first();\n`````\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftonic%2Fkatarxjava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftonic%2Fkatarxjava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftonic%2Fkatarxjava/lists"}