[
  {
    "path": ".gitignore",
    "content": "# Created by https://www.toptal.com/developers/gitignore/api/java,kotlin,node,c++,text,images,diskimage,sublimetext\n# Edit at https://www.toptal.com/developers/gitignore?templates=java,kotlin,node,c++,text,images,diskimage,sublimetext\n\n### C++ ###\n# Prerequisites\n*.d\n\n# Compiled Object files\n*.slo\n*.lo\n*.o\n*.obj\n\n# Precompiled Headers\n*.gch\n*.pch\n\n# Linker files\n*.ilk\n\n# Debugger Files\n*.pdb\n\n# Compiled Dynamic libraries\n*.so\n*.dylib\n*.dll\n\n# Fortran module files\n*.mod\n*.smod\n\n# Compiled Static libraries\n*.lai\n*.la\n*.a\n*.lib\n\n# Executables\n*.exe\n*.out\n*.app\n\n### DiskImage ###\n*.dmg\n*.iso\n*.toast\n*.vcd\n\n### Images ###\n# JPEG\n*.jpg\n*.jpeg\n*.jpe\n*.jif\n*.jfif\n*.jfi\n\n# JPEG 2000\n*.jp2\n*.j2k\n*.jpf\n*.jpx\n*.jpm\n*.mj2\n\n# JPEG XR\n*.jxr\n*.hdp\n*.wdp\n\n# Graphics Interchange Format\n*.gif\n\n# RAW\n*.raw\n\n# Web P\n*.webp\n\n# Portable Network Graphics\n*.png\n\n# Animated Portable Network Graphics\n*.apng\n\n# Multiple-image Network Graphics\n*.mng\n\n# Tagged Image File Format\n*.tiff\n*.tif\n\n# Scalable Vector Graphics\n*.svg\n*.svgz\n\n# Portable Document Format\n*.pdf\n\n# X BitMap\n*.xbm\n\n# BMP\n*.bmp\n*.dib\n\n# ICO\n*.ico\n\n# 3D Images\n*.3dm\n*.max\n\n### Java ###\n# Compiled class file\n*.class\n\n# Log file\n*.log\n\n# BlueJ files\n*.ctxt\n\n# Mobile Tools for Java (J2ME)\n.mtj.tmp/\n\n# Package Files #\n*.jar\n*.war\n*.nar\n*.ear\n*.zip\n*.tar.gz\n*.rar\n\n# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml\nhs_err_pid*\n\n### Kotlin ###\n# Compiled class file\n\n# Log file\n\n# BlueJ files\n\n# Mobile Tools for Java (J2ME)\n\n# Package Files #\n\n# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml\n\n### Node ###\n# Logs\nlogs\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# TypeScript cache\n*.tsbuildinfo\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Optional stylelint cache\n.stylelintcache\n\n# Microbundle cache\n.rpt2_cache/\n.rts2_cache_cjs/\n.rts2_cache_es/\n.rts2_cache_umd/\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n.env.test\n.env*.local\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n.parcel-cache\n\n# Next.js build output\n.next\n\n# Nuxt.js build / generate output\n.nuxt\ndist\n\n# Storybook build outputs\n.out\n.storybook-out\nstorybook-static\n\n# rollup.js default build output\ndist/\n\n# Gatsby files\n.cache/\n# Comment in the public line in if your project uses Gatsby and not Next.js\n# https://nextjs.org/blog/next-9-1#public-directory-support\n# public\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n# DynamoDB Local files\n.dynamodb/\n\n# TernJS port file\n.tern-port\n\n# Stores VSCode versions used for testing VSCode extensions\n.vscode-test\n\n# Temporary folders\ntmp/\ntemp/\n\n### SublimeText ###\n# Cache files for Sublime Text\n*.tmlanguage.cache\n*.tmPreferences.cache\n*.stTheme.cache\n\n# Workspace files are user-specific\n*.sublime-workspace\n\n# Project files should be checked into the repository, unless a significant\n# proportion of contributors will probably not be using Sublime Text\n# *.sublime-project\n\n# SFTP configuration file\nsftp-config.json\n\n# Package control specific files\nPackage Control.last-run\nPackage Control.ca-list\nPackage Control.ca-bundle\nPackage Control.system-ca-bundle\nPackage Control.cache/\nPackage Control.ca-certs/\nPackage Control.merged-ca-bundle\nPackage Control.user-ca-bundle\noscrypto-ca-bundle.crt\nbh_unicode_properties.cache\n\n# Sublime-github package stores a github token in this file\n# https://packagecontrol.io/packages/sublime-github\nGitHub.sublime-settings\n\n### Text ###\n*.doc\n*.docx\n*.msg\n*.pages\n*.rtf\n*.txt\n*.wpd\n*.wps\n\n# End of https://www.toptal.com/developers/gitignore/api/java,kotlin,node,c++,text,images,diskimage,sublimetext"
  },
  {
    "path": "Arcade/Databases/alarmClocks.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE alarmClocks()\nBEGIN\n    SET @currentDate := (SELECT * FROM userInput);\n    SET @endDate = CONCAT(YEAR(@currentDate), \"-12-31 \", \"23:59:59\");\n    WHILE DATE_ADD(@currentDate, INTERVAL 7 DAY) <= @endDate DO\n        SET @currentDate := DATE_ADD(@currentDate, INTERVAL 7 DAY);\n        INSERT INTO userInput (input_date) VALUES (@currentDate);\n    END WHILE;\n    SELECT input_date AS alarm_date\n    FROM userInput ORDER BY alarm_date ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/automaticNotifications.sql",
    "content": "CREATE PROCEDURE automaticNotifications()\n    SELECT email\n    FROM users\n    WHERE role NOT IN (\"admin\", \"premium\")\n\n    ORDER BY email;"
  },
  {
    "path": "Arcade/Databases/battleshipGameResults.sql",
    "content": "CREATE PROCEDURE battleshipGameResults()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    WITH base AS (\n        SELECT l.id, ABS(\n            (l.upper_left_x + l.upper_left_y) -\n            (l.bottom_right_x + l.bottom_right_y)\n        ) + 1 AS size, (\n            SELECT COUNT(*) FROM opponents_shots\n            WHERE (\n                target_x >= l.upper_left_x\n                AND target_x <= l.bottom_right_x\n            ) AND (\n                target_y >= l.upper_left_y\n                AND target_y <= l.bottom_right_y\n            )\n        ) AS damage FROM locations_of_ships AS l\n    )\n    \n    SELECT DISTINCT b.size, (\n        SELECT COUNT(*) FROM base WHERE size = b.size\n        AND damage = 0\n    ) AS undamaged, (\n        SELECT COUNT(*) FROM base WHERE size = b.size\n        AND damage > 0 AND damage < size\n    ) AS partly_damaged, (\n        SELECT COUNT(*) FROM base WHERE size = b.size\n        AND damage = size\n    ) AS sunk FROM base AS b ORDER BY size;\nEND"
  },
  {
    "path": "Arcade/Databases/booksCatalogs.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE booksCatalogs()\nBEGIN\n\tSELECT DISTINCT SUBSTRING_INDEX(ExtractValue(xml_doc, \"//author\"),\n    \" \", 2)\n    AS author FROM catalogs ORDER BY author;\nEND"
  },
  {
    "path": "Arcade/Databases/bugsInComponent.sql",
    "content": "CREATE PROCEDURE bugsInComponent()\nBEGIN\n    /* Write your SQL here. Terminate each statement with a semicolon. */\n    SELECT b.title AS bug_title, c.title AS component_title,\n    (\n        SELECT COUNT(*) FROM BugComponent\n        WHERE component_id = c.id\n    ) AS bugs_in_component FROM Bug as b\n    JOIN BugComponent AS bc ON b.num = bc.bug_num\n    JOIN Component AS c ON bc.component_id = c.id\n    WHERE b.num IN (\n        SELECT bug_num FROM BugComponent\n        GROUP BY bug_num HAVING COUNT(*) > 1\n    ) ORDER BY bugs_in_component DESC, c.id, b.num;\nEND"
  },
  {
    "path": "Arcade/Databases/checkExpenditure.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE checkExpenditure()\nBEGIN\n    SELECT ae.id AS id,\n    IF(SUM(ep.expenditure_sum) < ae.value, 0,\n    SUM(ep.expenditure_sum) - ae.value) AS loss\n    FROM expenditure_plan AS ep, allowable_expenditure AS ae\n    WHERE WEEK(monday_date) BETWEEN ae.left_bound\n    AND ae.right_bound GROUP BY ae.id;\nEND"
  },
  {
    "path": "Arcade/Databases/closestCells.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE closestCells()\nBEGIN\n    SELECT l.id AS id1,\n           (SELECT id \n                FROM positions r\n                WHERE l.id != r.id\n                ORDER BY ST_Distance(point(l.x, l.y), point(r.x, r.y)) limit 1\n           ) id2\n    FROM positions l;\nEND"
  },
  {
    "path": "Arcade/Databases/combinationLock.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE combinationLock()\nBEGIN\n\tSELECT ROUND(EXP(SUM(LOG(LENGTH(characters))))) AS combinations\n    FROM discs;\nEND"
  },
  {
    "path": "Arcade/Databases/companyEmployees.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE companyEmployees()\nBEGIN\n\tSELECT dep_name, emp_name FROM departments, employees\n    ORDER BY dep_name, emp_name;\nEND"
  },
  {
    "path": "Arcade/Databases/consecutiveIds.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE consecutiveIds()\nBEGIN\n    SET @uid := 0;\n\tSELECT id AS oldId, (@uid := @uid + 1) AS newId\n    FROM itemIds ORDER BY oldId; \nEND"
  },
  {
    "path": "Arcade/Databases/contestLeaderboard.sql",
    "content": "CREATE PROCEDURE contestLeaderboard()\nBEGIN\n    SELECT name FROM leaderboard\n    ORDER BY score DESC LIMIT 3, 5;\nEND"
  },
  {
    "path": "Arcade/Databases/correctIPs.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE correctIPs()\nBEGIN\n\tSELECT id, ip FROM ips\n    WHERE ip REGEXP \"(\\\\d{2}\\\\.\\\\d+)$|(\\\\.\\\\d{2})$\"\n    AND IS_IPV4(ip) ORDER BY id;\nEND"
  },
  {
    "path": "Arcade/Databases/countriesInfo.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE countriesInfo()\nBEGIN\n\tSELECT COUNT(*) AS number, AVG(population) AS average,\n    SUM(population) AS total FROM countries;\nEND"
  },
  {
    "path": "Arcade/Databases/countriesSelection.sql",
    "content": "CREATE PROCEDURE countriesSelection()\nBEGIN\n\tSELECT * FROM countries WHERE continent = \"Africa\"\n    ORDER BY name ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/coursesDistribution.sql",
    "content": "CREATE PROCEDURE coursesDistribution()\nBEGIN\n    ALTER TABLE groupcourses ADD FOREIGN KEY (course_id)\n    REFERENCES courses(id) ON DELETE CASCADE;\n\n    ALTER TABLE groupexams ADD FOREIGN KEY (course_id)\n    REFERENCES courses(id) ON DELETE CASCADE;\n\n    DELETE FROM courses WHERE name LIKE '%-toremove';\n\n\n    SELECT group_id, course_id\n      FROM groupcourses\n     UNION\n    SELECT group_id, course_id\n      FROM groupexams\n     ORDER BY group_id, course_id;\nEND"
  },
  {
    "path": "Arcade/Databases/currencyCodes.sql",
    "content": "CREATE PROCEDURE currencyCodes()\nBEGIN\n    DELETE FROM currencies\n    WHERE LENGTH(code) != 3;\n\n    SELECT * FROM currencies ORDER BY code;\nEND"
  },
  {
    "path": "Arcade/Databases/customerMessages.sql",
    "content": "DROP FUNCTION IF EXISTS response;\nCREATE FUNCTION response(name VARCHAR(40)) RETURNS VARCHAR(200) DETERMINISTIC\nBEGIN\n    RETURN CONCAT(\"Dear \", CONCAT(\n    REGEXP_REPLACE(LOWER(SUBSTRING_INDEX(name, \" \", 1)), \".\",\n    UPPER(SUBSTR(SUBSTRING_INDEX(name, \" \", 1), 1, 1)), 1, 1), \" \",\n    REGEXP_REPLACE(LOWER(SUBSTRING_INDEX(name, \" \", -1)), \".\",\n    UPPER(SUBSTR(SUBSTRING_INDEX(name, \" \", -1), 1, 1)), 1, 1)),\n    \"! We received your message and will \",\n    \"process it as soon as possible. Thanks for \",\n    \"using our service. FooBar On! - FooBarIO team.\");\nEND;\n\nCREATE PROCEDURE customerMessages()\nBEGIN\n    SELECT id, name, response(name) AS response\n    FROM customers;\nEND;"
  },
  {
    "path": "Arcade/Databases/dancingCompetition.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE dancingCompetition()\nBEGIN\n    SELECT it.arbiter_id, it.first_criterion,\n    it.second_criterion, it.third_criterion\n    FROM (\n        SELECT *, IF(\n            first_criterion = (SELECT MAX(first_criterion) FROM scores) OR\n            first_criterion = (SELECT MIN(first_criterion) FROM scores), 1, 0\n        ) + IF(\n            second_criterion = (SELECT MAX(second_criterion) FROM scores) OR\n            second_criterion = (SELECT MIN(second_criterion) FROM scores), 1, 0\n        ) + IF(\n            third_criterion = (SELECT MAX(third_criterion) FROM scores) OR\n            third_criterion = (SELECT MIN(third_criterion) FROM scores), 1, 0\n        )\n        AS filter\n        FROM scores GROUP BY arbiter_id\n    ) AS it WHERE it.filter <= 1;\nEND"
  },
  {
    "path": "Arcade/Databases/dateFormatting.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE dateFormatting()\nBEGIN\n\tSELECT DATE_FORMAT(date_str, \"%Y-%m-%d\") AS date_iso\n    FROM documents ORDER BY id;\nEND"
  },
  {
    "path": "Arcade/Databases/driversInfo.sql",
    "content": "CREATE PROCEDURE driversInfo()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    DROP TABLE IF EXISTS names;\n    CREATE TABLE names (\n        id INT PRIMARY KEY AUTO_INCREMENT,\n        name VARCHAR(100)\n    );\n    \n    DROP TABLE IF EXISTS summary;\n    CREATE TABLE summary (\n        value VARCHAR(255)\n    );\n    \n    INSERT INTO names (name)\n    SELECT DISTINCT driver_name FROM inspections\n    ORDER BY driver_name;\n    \n    INSERT INTO summary (value)\n    SELECT CONCAT(\n    ' Total miles driven by all drivers combined: ',\n    SUM(miles_logged)) FROM inspections;\n    \n    SET @id := 1;\n    WHILE (SELECT COUNT(*) FROM names WHERE id = @id) = 1 DO\n        \n        INSERT INTO summary (value)\n        SELECT CONCAT(\n            ' Name: ', driver_name,\n            '; number of inspections: ', COUNT(driver_name),\n            '; miles driven: ', SUM(miles_logged)\n        ) FROM inspections WHERE driver_name =\n        (SELECT name FROM names WHERE id = @id);\n        \n        INSERT INTO summary (value)\n        SELECT CONCAT(\n            '  date: ', date,\n            '; miles covered: ', miles_logged\n        ) FROM inspections WHERE driver_name =\n        (SELECT name FROM names WHERE id = @id)\n        ORDER BY date;\n        \n        SET @id := @id + 1;\n    END WHILE;\n    \n    SELECT value AS summary FROM summary;\nEND"
  },
  {
    "path": "Arcade/Databases/emptyDepartments.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE emptyDepartments()\nBEGIN\n    SELECT d.dep_name FROM departments AS d WHERE NOT EXISTS (\n        SELECT * FROM employees AS e WHERE d.id = e.department\n    );\nEND"
  },
  {
    "path": "Arcade/Databases/expressionsVerification.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE expressionsVerification()\nBEGIN\n\tSELECT * FROM expressions\n    WHERE CASE operation\n    WHEN \"+\" THEN a + b = c\n    WHEN \"-\" THEN a - b = c\n    WHEN \"/\" THEN a / b = c\n    WHEN \"*\" THEN a * b = c\n    END;\nEND"
  },
  {
    "path": "Arcade/Databases/filmLibrary.sql",
    "content": "CREATE PROCEDURE filmLibrary()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    SET @fav_genre = (SELECT genre FROM movies\n    GROUP BY genre ORDER BY COUNT(*) DESC LIMIT 1);\n    \n    SELECT s.actor, a.age FROM starring_actors AS s\n    INNER JOIN actor_ages AS a ON s.actor = a.actor\n    WHERE movie_name IN (SELECT movie FROM movies WHERE genre = @fav_genre)\n    ORDER BY a.age DESC, s.actor;\nEND"
  },
  {
    "path": "Arcade/Databases/findTable.sql",
    "content": "CREATE PROCEDURE findTable()\nBEGIN\n    /* Write your SQL here. Terminate each statement with a semicolon. */\n    SELECT TABLE_NAME AS tab_name, COLUMN_NAME AS col_name,\n    DATA_TYPE AS data_type FROM information_schema.columns\n    WHERE table_schema = 'ri_db' AND table_name LIKE \"e%s\"\n    ORDER BY TABLE_NAME, COLUMN_NAME;\n    \nEND"
  },
  {
    "path": "Arcade/Databases/freeSeats.sql",
    "content": "CREATE PROCEDURE freeSeats()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n        \n    SELECT f.flight_id,\n    IFNULL(\n    (\n        SELECT (p.number_of_seats - c.value)\n        FROM (\n            SELECT flight_id, COUNT(flight_id) AS value\n            FROM purchases GROUP BY flight_id\n        ) AS c WHERE c.flight_id = f.flight_id\n    ), p.number_of_seats) AS free_seats\n    FROM flights AS f INNER JOIN planes AS p\n    ON f.plane_id = p.plane_id ORDER BY flight_id;\nEND"
  },
  {
    "path": "Arcade/Databases/giftPackaging.sql",
    "content": "CREATE PROCEDURE giftPackaging()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    SELECT (\n        SELECT package_type FROM packages\n        WHERE g.length <= length AND g.width <= width AND g.height <= height\n        ORDER BY (length * width * height) LIMIT 1\n    ) AS package_type, COUNT(*) AS number\n    FROM gifts AS g GROUP BY package_type ORDER BY package_type;\nEND"
  },
  {
    "path": "Arcade/Databases/gradeDistribution.sql",
    "content": "CREATE PROCEDURE gradeDistribution()\nBEGIN\n    SELECT Name, ID FROM Grades\n    WHERE Final > (Midterm1+Midterm2) / 2\n    ORDER BY LEFT(Name, 3);\nEND"
  },
  {
    "path": "Arcade/Databases/habitatArea.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE habitatArea()\nBEGIN\n\tSELECT ST_Area(ST_ConvexHull(ST_GeomFromText(CONCAT(\"MultiPoint(\", GROUP_CONCAT(x, \" \", y), \")\"))))\n    AS area FROM places;\nEND"
  },
  {
    "path": "Arcade/Databases/holidayEvent.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE holidayEvent()\nBEGIN\n    SET @counter := 0;\n    SELECT DISTINCT buyer_name AS winners FROM (\n        SELECT buyer_name, (@counter := @counter + 1) AS counter\n        FROM purchases\n    ) AS t WHERE counter MOD 4 = 0 ORDER BY winners ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/hostnamesOrdering.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE hostnamesOrdering()\nBEGIN\n    SELECT id, hostname FROM hostnames\n    ORDER BY REVERSE(SUBSTR(CONCAT_WS(\".\",\n    SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(hostname, \".\", 1)), \".\", 1),\n    SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(hostname, \".\", 2)), \".\", 1),\n    SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(hostname, \".\", 3)), \".\", 1)),\n    1, CHAR_LENGTH(hostname))) ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/importantEvents.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE importantEvents()\nBEGIN\n\tSELECT id, name, event_date, participants FROM events\n    ORDER BY WEEKDAY(event_date) ASC, participants DESC;\nEND"
  },
  {
    "path": "Arcade/Databases/interestClub.sql",
    "content": "CREATE PROCEDURE interestClub()\n    SELECT name\n    FROM people_interests\n    WHERE interests & (FIND_IN_SET('reading', interests) > 0)\n    AND interests & (FIND_IN_SET('drawing', interests) > 0)\nORDER BY name"
  },
  {
    "path": "Arcade/Databases/itemCounts.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE itemCounts()\nBEGIN\n    SELECT item_name, item_type, COUNT(item_name) AS item_count\n    FROM  availableItems GROUP BY item_type, item_name\n    ORDER BY item_type ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/legsCount.sql",
    "content": "DROP PROCEDURE IF EXISTS legsCount;\nCREATE PROCEDURE legsCount()\n    SELECT SUM(IF(type = \"human\", 2, 4)) as summary_legs\n    FROM creatures\n    ORDER BY id;"
  },
  {
    "path": "Arcade/Databases/localCalendar.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE localCalendar()\nBEGIN\n\tSELECT e.event_id AS event_id, IF(\n        s.hours = 24,\n        DATE_FORMAT(\n            DATE_ADD(e.date, INTERVAL s.timeshift MINUTE),\n            \"%Y-%m-%d %H:%i\"\n        ),\n        DATE_FORMAT(\n            DATE_ADD(e.date, INTERVAL s.timeshift MINUTE),\n            \"%Y-%m-%d %h:%i %p\"\n        )\n    ) AS formatted_date FROM events AS e\n    INNER JOIN settings AS s ON e.user_id = s.user_id\n    ORDER BY event_id ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/marketReport.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE marketReport()\nBEGIN\n    WITH cte AS (\n        SELECT country, COUNT(country) AS competitors\n        FROM foreignCompetitors GROUP BY country ORDER BY country ASC\n    )\n    SELECT * FROM cte\n    UNION ALL\n    SELECT \"Total:\" AS country, COUNT(country) AS competitors\n    FROM foreignCompetitors;\nEND"
  },
  {
    "path": "Arcade/Databases/mischievousNephews.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE mischievousNephews()\nBEGIN\n\tSELECT WEEKDAY(mischief_date) AS weekday, mischief_date,\n    author, title FROM mischief WHERE (author = \"Huey\") OR\n    (author = \"Dewey\") OR (author = \"Louie\") ORDER BY weekday,\n    Field(author, 'Huey', 'Dewey' ,'Louie'), mischief_date, title;\nEND"
  },
  {
    "path": "Arcade/Databases/monthlyScholarships.sql",
    "content": "CREATE PROCEDURE monthlyScholarships()\nBEGIN\n\tSELECT id, scholarship / 12 AS scholarship\n    FROM scholarships ORDER BY id;\nEND"
  },
  {
    "path": "Arcade/Databases/mostExpensive.sql",
    "content": "CREATE PROCEDURE mostExpensive()\nBEGIN\n    SELECT name FROM Products ORDER BY price * quantity DESC,\n    name ASC LIMIT 1;\nEND"
  },
  {
    "path": "Arcade/Databases/movieDirectors.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE movieDirectors()\nBEGIN\n\tSELECT director FROM moviesInfo\n    WHERE year > 2000 GROUP BY director\n    HAVING SUM(oscars) > 2\n    ORDER BY director ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/netIncome.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE netIncome()\nBEGIN\n\tSELECT YEAR(date) AS year, QUARTER(date) AS quarter,\n    (SUM(profit) - SUM(loss)) AS net_profit FROM accounting\n    GROUP BY quarter, year ORDER BY year ASC, quarter ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/newsSubscribers.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE newsSubscribers()\nBEGIN\n    SELECT subscriber FROM half_year\n    WHERE newspaper LIKE \"%Daily%\"\n    UNION SELECT subscriber FROM full_year\n    WHERE newspaper LIKE \"%Daily%\"\n    ORDER BY subscriber ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/nicknames.sql",
    "content": "CREATE PROCEDURE nicknames()\nBEGIN\n\tUPDATE reservedNicknames\n    SET nickname = CONCAT(\"rename - \", nickname),\n    id = CONCAT(\"rename - \", id)\n    WHERE LENGTH(nickname) <> 8;\n\n    SELECT * FROM reservedNicknames ORDER BY id;\nEND"
  },
  {
    "path": "Arcade/Databases/nullIntern.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE nullIntern()\nBEGIN\n\tSELECT COUNT(id) AS number_of_nulls FROM departments\n    WHERE description IS NULL OR \n    TRIM(description) IN (\"null\", \"nil\", \"-\");\nEND"
  },
  {
    "path": "Arcade/Databases/officeBranches.sql",
    "content": "CREATE PROCEDURE officeBranches()\nBEGIN\n    ALTER TABLE branches ADD FOREIGN KEY (branchtype_id)\n    REFERENCES branch_types (id) ON DELETE SET NULL;\n\n    DELETE FROM branch_types WHERE name LIKE '%-outdated';\n\n    SELECT * FROM branches\n    ORDER BY branch_id;\nEND"
  },
  {
    "path": "Arcade/Databases/orderAnalytics.sql",
    "content": "DROP PROCEDURE IF EXISTS orderAnalytics;\nCREATE PROCEDURE orderAnalytics()\nBEGIN\n    WITH order_analytics AS (\n        SELECT id, YEAR(order_date) AS year, QUARTER(order_date)\n        AS quarter, type, (quantity * price)\n        AS total_price FROM orders\n    )\n\n    SELECT *\n    FROM order_analytics\n    ORDER by id;\nEND;"
  },
  {
    "path": "Arcade/Databases/orderOfSuccession.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE orderOfSuccession()\nBEGIN\n    SELECT CONCAT(IF(gender = \"M\", \"King\", \"Queen\"), \" \", name) AS name\n    FROM Successors ORDER BY birthday;\nEND"
  },
  {
    "path": "Arcade/Databases/orderPrices.sql",
    "content": "DROP FUNCTION IF EXISTS get_total;\nCREATE FUNCTION get_total(items VARCHAR(45)) RETURNS INT DETERMINISTIC\nBEGIN\n    SET @out := 0, @i := 1;\n    \n    WHILE REGEXP_SUBSTR(items, \"\\\\d++\", 1, @i) IS NOT NULL DO\n        SET @out := @out + (SELECT price FROM item_prices\n            WHERE id = REGEXP_SUBSTR(items, \"\\\\d++\", 1, @i) + 0);\n        SET @i := @i + 1;\n    END WHILE;\n    \n    RETURN @out;\nEND;\n\nCREATE PROCEDURE orderPrices()\nBEGIN\n    SELECT id, buyer, get_total(items) AS total_price\n    FROM orders\n    ORDER BY id;\nEND;"
  },
  {
    "path": "Arcade/Databases/orderingEmails.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE orderingEmails()\nBEGIN\n\tSELECT id, email_title, CONCAT(FLOOR(\n        IF(size < POW(2, 20),(size / POW(2, 10)), (size / POW(2, 20)))\n    ), \" \", IF(size < POW(2, 20), \"Kb\", \"Mb\"))\n    AS short_size FROM emails\n    ORDER BY size DESC;\nEND"
  },
  {
    "path": "Arcade/Databases/pastEvents.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE pastEvents()\nBEGIN\n    SELECT name, event_date FROM Events\n    WHERE event_date BETWEEN DATE_SUB(\n            (SELECT MAX(event_date) FROM Events), INTERVAL 7 DAY\n        )\n        AND DATE_SUB(\n            (SELECT MAX(event_date) FROM Events), INTERVAL 1 DAY\n        )\n    ORDER BY event_date DESC;\nEND"
  },
  {
    "path": "Arcade/Databases/personalHobbies.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE personalHobbies()\nBEGIN\n\tSELECT name FROM people_hobbies\n    WHERE hobbies LIKE \"%reading%\" AND\n    hobbies LIKE \"%sports%\";\nEND"
  },
  {
    "path": "Arcade/Databases/placesOfInterest.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE placesOfInterest()\nBEGIN\n    SELECT country, SUM(\n        IF(leisure_activity_type = \"Adventure park\",\n        number_of_places, 0)\n    ) AS adventure_park,\n    SUM(\n        IF(leisure_activity_type = \"Golf\",\n        number_of_places, 0)\n    ) AS golf,\n    SUM(\n        IF(leisure_activity_type = \"River cruise\",\n        number_of_places, 0)\n    ) AS river_cruise,\n    SUM(\n        IF(leisure_activity_type = \"Kart racing\",\n        number_of_places, 0)\n    ) AS kart_racing\n    FROM countryActivities GROUP BY country ORDER BY country;\nEND"
  },
  {
    "path": "Arcade/Databases/placesOfInterestPairs.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE placesOfInterestPairs()\nBEGIN\n\tSELECT s1.name AS place1, s2.name AS place2\n    FROM sights AS s1, sights AS s2\n    WHERE  ST_Distance(Point(s1.x, s1.y), Point(s2.x, s2.y)) < 5\n    AND s1.name < s2.name ORDER BY place1 ASC, place2 ASC; \nEND"
  },
  {
    "path": "Arcade/Databases/projectList.sql",
    "content": "CREATE PROCEDURE projectList()\nBEGIN\n\tSELECT project_name, team_lead, income\n    FROM Projects ORDER BY internal_id ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/projectsTeam.sql",
    "content": "CREATE PROCEDURE projectsTeam()\nBEGIN\n\tSELECT DISTINCT name FROM projectLog ORDER BY (name) ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/queriesExecution.sql",
    "content": "CREATE PROCEDURE queriesExecution()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    DECLARE done BOOL DEFAULT FALSE;\n    DECLARE s_code VARCHAR(2048) DEFAULT \"\";\n    DECLARE q_cursor CURSOR FOR SELECT code FROM my_queries;\n    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;\n    SET @i = 0;\n    \n    DROP TABLE IF EXISTS my_queries;\n    CREATE TABLE my_queries (\n        id INT AUTO_INCREMENT PRIMARY KEY,\n        query_name VARCHAR(2048),\n        code VARCHAR(2048)\n    );\n    \n    DROP TABLE IF EXISTS output;\n    CREATE TABLE output (\n        query_name VARCHAR(255),\n        val VARCHAR(255)\n    );\n    \n    INSERT INTO my_queries (query_name, code)\n    SELECT query_name, code FROM queries;\n    \n    UPDATE my_queries SET code = REGEXP_REPLACE(\n        code,\n        \"FROM\",\n        CONCAT(\"AS val FROM\")\n    );\n\n    UPDATE my_queries SET code = REGEXP_REPLACE(\n        code,\n        \"SELECT\",\n        CONCAT(\n            \"INSERT INTO output SELECT \",\n            \"(SELECT query_name FROM my_queries WHERE id = \", (@i := @i + 1),\n            \") \", \"AS query_name,\"\n        )\n    );\n\n    OPEN q_cursor;\n\n    my_loop: LOOP\n        FETCH q_cursor INTO s_code;\n        \n        IF done THEN\n            LEAVE my_loop;\n        END IF;\n        \n        SET @sql := s_code;\n        PREPARE q FROM @sql;\n        \n        EXECUTE q;\n        DEALLOCATE PREPARE q;\n    END LOOP;\n\n    CLOSE q_cursor;\n    \n    SELECT * FROM output;\nEND"
  },
  {
    "path": "Arcade/Databases/recentHires.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE recentHires()\nBEGIN\n    SET @let := 0;\n    WITH\n        cte1 AS (\n            SELECT name, (@let := @let + 1) AS filter FROM (\n                SELECT name FROM pr_department\n                ORDER BY date_joined DESC LIMIT 5\n            ) AS x ORDER BY name\n        ),\n        cte2 AS (\n            SELECT name, (@let := @let + 1) AS filter FROM (\n                SELECT name FROM it_department\n                ORDER BY date_joined DESC LIMIT 5\n            ) AS y ORDER BY name\n        ),\n        cte3 AS (\n            SELECT name, (@let := @let + 1) AS filter FROM (\n                SELECT name FROM sales_department\n                ORDER BY date_joined DESC LIMIT 5\n            ) AS z ORDER BY name\n        )\n    SELECT names FROM (\n        SELECT name AS names, filter FROM cte1 UNION ALL\n        SELECT name AS names, filter FROM cte2 UNION ALL\n        SELECT name AS names, filter FROM cte3\n        ORDER BY filter ASC\n    ) AS n;\nEND"
  },
  {
    "path": "Arcade/Databases/restaurantInfo.sql",
    "content": "CREATE PROCEDURE restaurantInfo()\nBEGIN\n    ALTER TABLE restaurants ADD COLUMN description VARCHAR(100)\n    DEFAULT(\"TBD\");\n    ALTER TABLE restaurants ADD COLUMN active INT DEFAULT(1);\n\n    SELECT * FROM restaurants ORDER BY id;\nEND\n"
  },
  {
    "path": "Arcade/Databases/routeLength.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE routeLength()\nBEGIN\n\tSELECT ROUND(\n        SUM(\n            ST_Distance(Point(c1.x, c1.y), Point(c2.x, c2.y))\n        ), 9\n    ) AS total\n    FROM cities AS c1, cities AS c2\n    WHERE c2.id = c1.id + 1;\nEND"
  },
  {
    "path": "Arcade/Databases/salaryDifference.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE salaryDifference()\nBEGIN\n    SELECT COALESCE(((SELECT MAX(salary) FROM employees) *\n    (\n        SELECT COUNT(salary) FROM employees\n        WHERE salary = (SELECT MAX(salary) FROM employees)\n    )) - (SELECT MIN(salary) FROM employees) *\n    (\n        SELECT COUNT(salary) FROM employees\n        WHERE salary = (SELECT MIN(salary) FROM employees)\n    ), 0) AS difference;\nEND"
  },
  {
    "path": "Arcade/Databases/scholarshipsDistribution.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE scholarshipsDistribution()\nBEGIN\n\tSELECT candidate_id AS student_id FROM candidates\n    WHERE candidate_id NOT IN (\n        SELECT student_id FROM detentions\n    );\nEND"
  },
  {
    "path": "Arcade/Databases/securityBreach.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE securityBreach()\nBEGIN\n\tSELECT first_name, second_name, attribute\n    FROM users WHERE\n    REGEXP_LIKE(attribute, CONCAT(\"\\\\w+%\", first_name,\n    \"_\", second_name, \"%\", \"\\\\w*\"), \"c\")\n    ORDER BY attribute; \nEND"
  },
  {
    "path": "Arcade/Databases/soccerGamesSeries.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE soccerGameSeries()\nBEGIN\n    SELECT IF(\n        wins > 0, 1,\n        IF(\n            wins < 0, 2,\n            IF(\n                diff > 0, 1,\n                IF(\n                    diff < 0, 2,\n                    IF(\n                        host > 0, 1,\n                        IF(\n                            host < 0, 2, 0\n                        )\n                    )\n                )\n            )\n        )\n    ) winner\n   FROM\n   (\n      SELECT \n        SUM(IF(s1 > s2, 1, -1)) wins,\n        SUM(s1 - s2) diff, \n        SUM(IF(h = 2, s1, -s2)) host\n      FROM\n      (\n        SELECT first_team_score s1, second_team_score s2, match_host h \n        FROM scores\n      ) x\n   ) y;\nEND"
  },
  {
    "path": "Arcade/Databases/soccerPlayers.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE soccerPlayers()\nBEGIN\n\tSELECT GROUP_CONCAT(\n        first_name, \" \", surname, \" #\", player_number\n        ORDER BY player_number ASC\n        SEPARATOR \"; \"\n    ) AS players\n    FROM soccer_team;\nEND"
  },
  {
    "path": "Arcade/Databases/sortBook.sql",
    "content": "CREATE PROCEDURE sortBookChapters()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    SELECT chapter_name FROM book_chapters\n    ORDER BY romanConverter(chapter_number);\nEND;\n\nCREATE FUNCTION romanConverter (value VARCHAR(25)) RETURNS INT\nBEGIN\n    SET @accumulator := 0;\n    SET @previous := 0;\n    SET @i := LENGTH(value);\n    \n    WHILE @i >= 1 DO\n        SET @v := findSymbol(SUBSTRING(value, @i, 1));\n        SET @m := 0;\n        \n        IF @v < @previous THEN SET @m := -1;\n        ELSE SET @m := 1;\n        END IF;\n        \n        SET @accumulator := @accumulator + @v * @m;\n        SET @previous := @v;\n        \n        SET @i = @i - 1;\n    END WHILE;\n    \n    RETURN @accumulator;\nEND;\n\nCREATE FUNCTION findSymbol (value CHAR(1)) RETURNS INT\nBEGIN\n    CASE value\n        WHEN 'I' THEN RETURN 1;\n        WHEN 'V' THEN RETURN 5;\n        WHEN 'X' THEN RETURN 10;\n        WHEN 'L' THEN RETURN 50;\n        WHEN 'C' THEN RETURN 100;\n        WHEN 'D' THEN RETURN 500;\n        WHEN 'M' THEN RETURN 1000;\n    END CASE;\nEND;"
  },
  {
    "path": "Arcade/Databases/storageOptimization.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE storageOptimization()\nBEGIN\n    SELECT id, 'name' AS column_name, name AS value\n    FROM workers_info\n    WHERE name IS NOT NULL\n    UNION\n    SELECT id, 'date_of_birth', date_of_birth\n    FROM workers_info\n    WHERE date_of_birth IS NOT NULL\n    UNION\n    SELECT id, 'salary', salary\n    FROM workers_info\n    WHERE salary IS NOT NULL\n    ORDER BY id, FIELD(column_name, 'name', 'date_of_birth', 'salary');\nEND"
  },
  {
    "path": "Arcade/Databases/stringsStatistics.sql",
    "content": "CREATE PROCEDURE stringsStatistics()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    DROP TABLE IF EXISTS letter;\n    CREATE TABLE letter (\n        id SMALLINT PRIMARY KEY AUTO_INCREMENT,\n        value CHAR(1)\n    );\n    \n    DROP TABLE IF EXISTS total;\n    CREATE TABLE total (\n        id SMALLINT PRIMARY KEY AUTO_INCREMENT,\n        value SMALLINT\n    );\n    \n    DROP TABLE IF EXISTS occurrence;\n    CREATE TABLE occurrence (\n        id SMALLINT PRIMARY KEY AUTO_INCREMENT,\n        value SMALLINT\n    );\n    \n    DROP TABLE IF EXISTS max_occurrence;\n    CREATE TABLE max_occurrence (\n        id SMALLINT PRIMARY KEY AUTO_INCREMENT,\n        value SMALLINT\n    );\n    \n    DROP TABLE IF EXISTS max_occurrence_reached;\n    CREATE TABLE max_occurrence_reached (\n        id SMALLINT PRIMARY KEY AUTO_INCREMENT,\n        value SMALLINT\n    );\n    \n    DROP TABLE IF EXISTS chars;\n    CREATE TABLE chars (\n        id SMALLINT PRIMARY KEY AUTO_INCREMENT,\n        value CHAR(1)\n    );\n    \n    SET @line := (SELECT GROUP_CONCAT(str SEPARATOR '') FROM strs);\n    \n    SET @i := 1;\n    WHILE @i <= LENGTH(@line) DO\n        INSERT INTO chars (value)\n        SELECT (SELECT SUBSTRING(@line, @i, 1));\n        SET @i = @i + 1;\n    END WHILE;\n    \n    /*For letter*/\n    INSERT INTO letter (value)\n    SELECT value FROM chars GROUP BY value;\n    \n    /* For total */\n    INSERT INTO total (value)\n    SELECT COUNT(*) FROM chars GROUP BY value;\n    \n    /* For occurrence*/\n    INSERT INTO occurrence (value) SELECT (\n        SELECT COUNT(*) FROM strs WHERE str LIKE CONCAT(\n            '%', l.value, '%'\n        )\n    ) FROM letter AS l;\n    \n    /* For max_occurrence*/\n    INSERT INTO max_occurrence (value)\n    SELECT (SELECT MAX(LENGTH(REGEXP_REPLACE(\n            str, CONCAT(\"[^\", l.value, \"]\"), \"\"\n        ))) FROM strs\n    ) AS 'max' FROM letter AS l;\n    \n    /* For max_occurrence_reached*/\n    INSERT INTO max_occurrence_reached (value) SELECT (\n        SELECT COUNT(*) FROM strs\n        WHERE LENGTH(REGEXP_REPLACE(\n            str, CONCAT(\"[^\", l.value, \"]\"), \"\"\n        )) = (\n            SELECT MAX(LENGTH(REGEXP_REPLACE(\n                str, CONCAT(\"[^\", l.value, \"]\"), \"\"\n            ))) AS m FROM strs\n        )\n    ) FROM letter AS l;\n\n    SELECT l.value AS letter, t.value AS total,\n    o.value AS occurrence, mo.value AS max_occurrence,\n    mor.value AS max_occurrence_reached\n    FROM letter AS l, total AS t, occurrence AS o,\n    max_occurrence AS mo, max_occurrence_reached AS mor\n    WHERE l.id = t.id && t.id = o.id && o.id = mo.id\n    && mo.id = mor.id ORDER BY letter;\nEND"
  },
  {
    "path": "Arcade/Databases/studentsInClubs.sql",
    "content": "CREATE PROCEDURE studentsInClubs()\n    SELECT * FROM students\n    WHERE EXISTS (\n        SELECT * FROM clubs AS c WHERE c.id = students.club_id\n    )\n    ORDER BY students.id;"
  },
  {
    "path": "Arcade/Databases/sunnyHolidays.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE sunnyHolidays()\nBEGIN\n\tSELECT h.holiday_date AS ski_date FROM holidays AS h\n    INNER JOIN weather AS w ON h.holiday_date = w.sunny_date\n    ORDER BY ski_date;\nEND"
  },
  {
    "path": "Arcade/Databases/suspectsInvestigation.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE suspectsInvestigation()\nBEGIN\n\tSELECT id, name, surname FROM Suspect AS s\n    WHERE s.height <= 170 AND\n    name LIKE \"b%\" AND surname LIKE \"gre_n\";\nEND"
  },
  {
    "path": "Arcade/Databases/suspectsInvestigation2.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE suspectsInvestigation2()\nBEGIN\n\tSELECT id, name, surname FROM Suspect AS s\n    WHERE s.height <= 170 OR surname NOT LIKE \"gre_n\"\n    OR name NOT LIKE \"B%\";\nEND"
  },
  {
    "path": "Arcade/Databases/tableSecurity.sql",
    "content": "CREATE PROCEDURE tableSecurity()\nBEGIN\n    CREATE OR REPLACE VIEW emp\n    AS SELECT id,\n              name,\n              YEAR(date_joined) AS date_joined,\n              \"-\" AS salary FROM employees;\n\n    SELECT id, name, date_joined, salary\n    FROM emp\n    ORDER BY id;\nEND\n"
  },
  {
    "path": "Arcade/Databases/testCheck.sql",
    "content": "CREATE PROCEDURE testCheck()\n    SELECT id, IF (\n    correct_answer = given_answer,\n    \"correct\", IF(given_answer IS NULL,\n    \"no answer\", \"incorrect\")) AS checks\n    FROM answers\n    ORDER BY id;\n"
  },
  {
    "path": "Arcade/Databases/tictactoeTournament.sql",
    "content": "CREATE PROCEDURE tictactoeTournament()\nBEGIN\n    /* Write your SQL here. Terminate each statement with a semicolon. */\n    SET @regx :=\n    \"^((xxx.{6}|...xxx...|.{6}xxx)|((x..){3}|(.x.){3}|(..x){3})|((x...){2}x|.(.x){3}..))$\";\n    SET @rego :=\n    \"^((ooo.{6}|...ooo...|.{6}ooo)|((o..){3}|(.o.){3}|(..o){3})|((o...){2}o|.(.o){3}..))$\";\n    \n    WITH\n    names AS (\n        SELECT name_naughts AS name FROM results\n        UNION\n        SELECT name_crosses AS name FROM results\n    ),\n    base AS (\n        SELECT n.name, (\n            SELECT COUNT(board) FROM results\n            WHERE name_naughts = n.name OR\n            name_crosses = n.name\n        ) AS played, (\n            SELECT COUNT(board) FROM results\n            WHERE (\n                name_naughts = n.name AND\n                REGEXP_LIKE(board, @rego, \"i\") = 1\n            ) OR (\n                name_crosses = n.name AND\n                REGEXP_LIKE(board, @regx, \"i\") = 1\n            )\n        ) AS won, (\n            SELECT COUNT(board) FROM results\n            WHERE (\n                name_naughts = n.name OR\n                name_crosses = n.name\n            ) AND (\n                REGEXP_LIKE(board, @rego, \"i\") = 0 AND\n                REGEXP_LIKE(board, @regx, \"i\") = 0\n            )\n        ) AS draw, (\n            SELECT COUNT(board) FROM results\n            WHERE (\n                name_naughts = n.name AND\n                REGEXP_LIKE(board, @regx, \"i\") = 1\n            ) OR (\n                name_crosses = n.name AND\n                REGEXP_LIKE(board, @rego, \"i\") = 1 \n            )\n        ) AS lost FROM names AS n\n    )\n    \n    SELECT name, (\n        SELECT won * 2 + draw FROM base\n        WHERE name = b.name\n    ) AS points, played, won, draw, lost FROM base AS b\n    ORDER BY points DESC, played, won DESC, name;\nEND;"
  },
  {
    "path": "Arcade/Databases/top5AverageGrade.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE top5AverageGrade()\nBEGIN\n\tSELECT ROUND(AVG(s1.grade), 2) AS average_grade\n    FROM (\n        SELECT grade FROM students\n        ORDER BY grade DESC LIMIT 5\n    ) AS s1;\nEND"
  },
  {
    "path": "Arcade/Databases/trackingSystem.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE trackingSystem()\nBEGIN\n   WITH\n        cte_id AS (\n            SELECT DISTINCT anonymous_id AS id FROM tracks\n            ORDER BY anonymous_id ASC\n        ),\n        cte_l AS (\n            SELECT id, (\n                SELECT event_name FROM tracks\n                WHERE anonymous_id = a.id\n                AND user_id IS NOT NULL\n                ORDER BY received_at ASC LIMIT 1\n            ) AS event_name FROM cte_id AS a\n        ),\n        cte_f AS (\n            SELECT id, (\n                SELECT event_name FROM tracks\n                WHERE anonymous_id = a.id\n                AND user_id IS NULL\n                ORDER BY received_at DESC LIMIT 1\n            ) AS event_name FROM cte_id AS a\n        )\n\n    SELECT a.id AS anonym_id, a.event_name AS last_null,\n    b.event_name AS first_notnull FROM cte_f AS a, cte_l AS b\n    WHERE a.id = b.id;\nEND"
  },
  {
    "path": "Arcade/Databases/travelDiary.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE travelDiary()\nBEGIN\n    SELECT GROUP_CONCAT(\n        DISTINCT country\n        ORDER BY country ASC SEPARATOR \";\"\n    )\n    AS countries FROM diary;\nEND"
  },
  {
    "path": "Arcade/Databases/typeInheritance.sql",
    "content": "CREATE FUNCTION isNumber(class VARCHAR(45))\nRETURNS BOOLEAN\nBEGIN\n    DECLARE basec VARCHAR(45) DEFAULT '';\n    DECLARE next VARCHAR(45) DEFAULT NULL;\n    DECLARE ret BOOLEAN DEFAULT FALSE;\n    DECLARE i INT DEFAULT 0;\n    SET next = class;\n    SET ret = FALSE;\n    SET i = 0;\n    WHILE i < 200 AND (NOT ret)\n    AND (SELECT COUNT(base) FROM inheritance WHERE derived = next LIMIT 1) DO\n       \n        SELECT base INTO basec FROM inheritance WHERE derived = next LIMIT 1;\n        SET ret = IF(IFNULL(basec,'') = 'Number', TRUE, FALSE);\n        SET next = basec;\n        SET i = i+1;\n    END WHILE;\n    RETURN ret OR i > 100; \nEND;\n\nCREATE PROCEDURE typeInheritance()\nBEGIN\n   \tSELECT var_name, type as var_type FROM variables\n    WHERE isNumber(type) ORDER BY var_name;\nEND"
  },
  {
    "path": "Arcade/Databases/unluckyEmployees.sql",
    "content": "CREATE PROCEDURE unluckyEmployees()\nBEGIN\n\t/* Write your SQL here. Terminate each statement with a semicolon. */\n    SET @id := 0;\n    WITH\n        cte AS (\n            SELECT (@id := @id + 1) AS id, x.* FROM (\n                SELECT d.name AS dep_name,\n                COUNT(full_name) AS emp_number,\n                IFNULL(SUM(e.salary), 0) AS total_salary\n                FROM Department AS d\n                LEFT JOIN Employee AS e ON d.id = e.department\n                GROUP BY dep_name HAVING emp_number < 6\n                ORDER BY total_salary DESC, emp_number DESC, d.id\n            ) AS x\n        )\n    \n    SELECT dep_name, emp_number, total_salary\n    FROM cte WHERE id % 2 > 0;\nEND"
  },
  {
    "path": "Arcade/Databases/userCountries.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE userCountries()\nBEGIN\n\tSELECT u.id, IFNULL(c.country, \"unknown\") AS country\n    FROM users AS u\n    LEFT JOIN cities AS c ON u.city = c.city\n    ORDER BY u.id ASC;\nEND"
  },
  {
    "path": "Arcade/Databases/usersByContinent.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE usersByContinent()\nBEGIN\n\tSELECT continent, SUM(users) AS users FROM countries\n    GROUP BY continent ORDER BY users DESC;\nEND"
  },
  {
    "path": "Arcade/Databases/validPhoneNumbers.sql",
    "content": "/*Please add ; after each select statement*/\nCREATE PROCEDURE validPhoneNumbers()\nBEGIN\n\tSELECT name, surname, phone_number\n    FROM phone_numbers WHERE phone_number\n    REGEXP \"^(?>\\\\(1\\\\)|1-)\\\\d{3}-\\\\d{3}-\\\\d{4}$\"\n    ORDER BY surname;\nEND"
  },
  {
    "path": "Arcade/Databases/volleyballResults.sql",
    "content": "CREATE PROCEDURE volleyballResults()\nBEGIN\n    SELECT * FROM results ORDER BY wins;\nEND"
  },
  {
    "path": "Arcade/Databases/websiteHacking.sql",
    "content": "CREATE PROCEDURE websiteHacking()\n    SELECT id,login,name\n    FROM users\n    WHERE type='user'\n    OR type LIKE \"%\"\n    ORDER BY id"
  },
  {
    "path": "Arcade/Intro/Java/AbsoluteValuesSumMinimization.java",
    "content": "import java.util.Arrays;\nimport java.util.stream.IntStream;\n\nfinal class AbsoluteValuesSumMinimization {\n\n\tint absoluteValuesSumMinimization(int[] a) {\n\t    int[] sums = Arrays.stream(a).map(n -> Arrays.stream(a)\n\t        .map(e -> Math.abs(n - e)).sum()).toArray();\n\t    int min = Arrays.stream(sums).min().getAsInt();\n\t    return a[IntStream.range(0, sums.length)\n\t        .filter(i -> sums[i] == min).toArray()[0]];\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/Add.java",
    "content": "public class Add {\n\n\tint add(int param1, int param2) {\n    \treturn param1 + param2;\n\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/AddBorder.java",
    "content": "final class AddBorder {\n\n\tString[] addBorder(String[] picture) {\n\t    int len = picture.length + 2;\n\t    String[] o = new String[len];\n\t    \n\t    for(int i = 0; i < len - 2; i++) {\n\t        o[i + 1] = \"*\"+picture[i]+\"*\";\n\t    }\n\t    \n\t    o[0] = o[len - 1] = \"*\".repeat(picture[0].length() + 2);\n\t    \n\t    return o;\n\t}\n}\n"
  },
  {
    "path": "Arcade/Intro/Java/AdjacentElementsProduct.java",
    "content": "import java.util.stream.IntStream;\n\nfinal class AdjacentElementsProduct {\n\t\n\tint adjacentElementsProduct(int[] inputArray) {\n\t    return IntStream.range(1, inputArray.length)\n        .map(n -> inputArray[n] * inputArray[n - 1])\n        .max()\n        .getAsInt();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/AllLongestStrings.java",
    "content": "import java.util.Arrays;\n\npublic class AllLongestStrings {\n\n\tString[] allLongestStrings(String[] inputArray) {\n\t    int max = Stream.<String>of(inputArray)\n\t\t.mapToInt(n -> n.length())\n\t\t.max()\n\t\t.getAsInt();\n\t\t\n\t    return Stream.<String>of(inputArray)\n\t\t.filter(e -> e.length() == max)\n\t\t.toArray(String[]::new);\n\t}\n}\n"
  },
  {
    "path": "Arcade/Intro/Java/AlmostIncreasingSequence.java",
    "content": "final class AlmostIncreasingSequence {\n\n\tboolean almostIncreasingSequence(int[] sequence) {\n\t    int last = -0x186a0, lastPrev = -0x186a0, c = 0;\n\t    \n\t    for(int n : sequence) {\n\t        if(n <= last) {\n\t            c++;\n\t            if(n > lastPrev) last = n;\n\t            continue;\n\t        }\n\t        lastPrev = last;\n\t        last = n;\n\t    }\n\t    \n\t    return c <= 1;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/AlphabeticShift.java",
    "content": "import java.util.stream.Collectors;\n\nfinal class AlphabeticShift {\n\n\tString alphabeticShift(String inputString) {\n\t    return inputString.chars().boxed()\n\t        .map(c -> c == 122 ? 'a' : (char)(c + 1))\n\t        .map(Object::toString)\n\t        .collect(Collectors.joining());\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/AlternatingSums.java",
    "content": "final class AlternatingSums {\n\n\tint[] alternatingSums(int[] a) {\n\t\tint[] o = new int[2];\n\t    for(int i = 0; i < a.length; i++) {\n\t        o[(i + 1) % 2 == 0 ? 1 : 0] += a[i];\n\t    }\n\t    return o;\n\t}\n}\t\n"
  },
  {
    "path": "Arcade/Intro/Java/AreEquallyStrong.java",
    "content": "public final class AreEquallyStrong {\n\n\tboolean areEquallyStrong(int yourLeft, int yourRight, int friendsLeft, int friendsRight) {\n    \tint yl = yourLeft, yr = yourRight, fl = friendsLeft, fr = friendsRight;\n   \t\treturn (yl == fl && yr == fr || yr == fl && yl == fr);\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/AreSimilar.java",
    "content": "import java.util.Arrays;\n\nfinal class AreSimilar {\n\n\tvoid swap(int[] a, int p, int q) {\n\t    int tmp = a[p];\n\t    a[p] = a[q];\n\t    a[q] = tmp;\n\t}\n\n\tboolean areSimilar(int[] a, int[] b) {\n\t    if(Arrays.equals(a, b)) return true;\n\t    int p = 0, q = 0;\n\t    \n\t    for(int i = 0, k = 2; i < b.length; i++) {\n\t        if(a[i] != b[i]) {\n\t            if(k == 2) {\n\t                p = i;\n\t                k--;\n\t                continue;\n\t            }\n\t            q = i;\n\t            k--;\n\t        }\n\t        if(k == 0) {\n\t            swap(b, p, q);\n\t            return Arrays.equals(a, b);\n\t        }\n\t    }\n\t    \n\t    return false;\n\t}\n}\n\n"
  },
  {
    "path": "Arcade/Intro/Java/ArrayChange.java",
    "content": "final class ArrayChange {\n\n\tint arrayChange(int[] inputArray) {\n\t\tint c = 0;\n\t    for(int i = 0; i < inputArray.length - 1; i++) {\n\t       while(inputArray[i + 1] <= inputArray[i]) {\n\t            inputArray[i + 1]++;\n\t            c++;\n\t       }\n\t    }\n\t    return c;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ArrayMaxConsecutiveSum.java",
    "content": "final class ArrayMaxConsecutiveSum {\n\n\tint arrayMaxConsecutiveSum(int[] inputArray, int k) {\n       int max = 0, t = 0;\n       \n       for(int i = 0; i <= inputArray.length - k; i++, t = 0) {\n           for(int j = i; j < i + k; j++) t += inputArray[j];\n           if(t > max) max = t;\n       }\n       \n       return max;\n    }\n}"
  },
  {
    "path": "Arcade/Intro/Java/ArrayMaximalAdjacentDifference.java",
    "content": "import java.util.stream.IntStream;\n\nfinal class ArrayMaximalAdjacentDifference {\n\t\n\tint arrayMaximalAdjacentDifference(int[] inputArray) {    \n\t    return IntStream.range(0, inputArray.length - 1)\n\t    .map(i -> Math.abs(inputArray[i] - inputArray[i + 1])).max().getAsInt();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ArrayReplace.java",
    "content": "import java.util.Arrays;\n\nfinal class ArrayReplace {\n\n\tint[] arrayReplace(int[] inputArray, int elemToReplace, int substitutionElem) {\n\t    return Arrays.stream(inputArray)\n\t    .map(n -> n == elemToReplace ? substitutionElem : n).toArray();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/AvoidObstacles.java",
    "content": "final class AvoidObstacles {\n\n\tint avoidObstacles(int[] inputArray) {\n\t    boolean k = true;\n\t    for(int i = 2; ; i++) {\n\t        for(int j : inputArray) {\n\t            if(j % i == 0) {\n\t                k = !k;\n\t                break;\n\t            }\n\t        }\n\t        if(k) return i;\n\t        k = true;\n\t    }\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/BishopAndPawn.java",
    "content": "final class BishopAndPawn {\n\n\tboolean bishopAndPawn(String bishop, String pawn) {\n\t    return Math.abs(bishop.charAt(0) - pawn.charAt(0))\n\t    == Math.abs(bishop.charAt(1) - pawn.charAt(1));\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/BoxBlur.java",
    "content": "import java.util.Arrays;\n\nfinal class BoxBlur {\n\n\tint[][] boxBlur(int[][] image) {\n\t    int h = image.length - 2;\n\t    int w = image[0].length - 2;\n\t    int[][] sum = new int[h][w];\n\t    \n\t    for(int i = 0; i < h; i++) {\n\t        for(int j = 0; j < w; j++) {\n\t            for(int y = i; y < i + 3; y++)\n\t                for(int x = j; x < j + 3; x++)\n\t                    sum[i][j] += image[y][x];\n\t            \n\t            sum[i][j] /= 9;\n\t        }\n\t    }\n\t    \n\t    return sum;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/BuildPalindrome.java",
    "content": "final class BuildPalindrome {\n\n\tString reverseString(String str) {\n\t    return new StringBuilder(str).reverse().toString();\n\t}\n\n\tString buildPalindrome(String st) {\n\t    if(reverseString(st).equals(st)) return st;\n\t    \n\t    String sg = \"\", out = \"\";\n\t    for(char c : st.toCharArray()) {\n\t        out = st+reverseString(sg += c+\"\");\n\t        if(out.equals(reverseString(out))) break;\n\t    }\n\t    return out;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/CenturyFromYear.java",
    "content": "public class CenturyFromYear {\n\n\tint centuryFromYear(int year) {\n\t    return 1 + (year - 1) / 100;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/CheckPalindrome.java",
    "content": "public class CheckPalindrome {\n\t\n\tboolean checkPalindrome(String inputString) {\n\t    return new StringBuilder(str).reverse().toString().equals(str);\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ChessBoardCellColor.java",
    "content": "final class ChessBoardCellColor {\n\n\tboolean chessBoardCellColor(String cell1, String cell2) {\n\t    int x1 = cell1.charAt(0) - 'A';\n\t    int y1 = new Integer(cell1.charAt(1)+\"\");\n\t    int x2 = cell2.charAt(0) - 'A';\n\t    int y2 = new Integer(cell2.charAt(1)+\"\");\n\t    \n\t    return (x1 + x2) % 2 == (y1 + y2) % 2;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ChessKnight.java",
    "content": "final class ChessKnight {\n\n\tboolean isSafe(int x, int y) {\n\t    return x >= 0 && x < 8 && y >= 0 && y < 8;\n\t}\n\n\tint chessKnight(String cell) {\n\t    int x = cell.charAt(0) - 'a',\n\t        y = new Integer(cell.charAt(1)+\"\") - 1,\n\t        out = 0;\n\t    \n\t    if(isSafe(x + 2, y + 1)) out++;\n\t    if(isSafe(x + 2, y - 1)) out++;\n\t    if(isSafe(x - 2, y + 1)) out++;\n\t    if(isSafe(x - 2, y - 1)) out++;\n\t    if(isSafe(x + 1, y + 2)) out++;\n\t    if(isSafe(x - 1, y + 2)) out++;\n\t    if(isSafe(x + 1, y - 2)) out++;\n\t    if(isSafe(x - 1, y - 2)) out++;\n\t    \n\t    return out;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/CircleOfNumbers.java",
    "content": "final class CircleOfNumbers {\n\n\tint circleOfNumbers(int n, int firstNumber) {\n\t    return (n / 2 + firstNumber) % n;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/CommonCharacterCount.java",
    "content": "import java.util.stream.IntStream;\nimport java.util.stream.Collectors;\n\nfinal class CommonCharacterCount {\n\t\n\tint commonCharacterCount(String s1, String s2) {\n\t    int o = 0;\n\t    String common = IntStream\n\t        .range(0x61, 0x7b)\n\t        .filter(n -> s1.contains((char)n+\"\") && s2.contains((char)n+\"\"))\n\t        .boxed().map(c -> (char)c.intValue()+\"\").collect(Collectors.joining());\n\t    \n\t    for(char c : common.toCharArray()) {\n\t        o += Math.min(\n\t            s1.chars().map(n -> c == (char)n ? 1 : 0).sum(),\n\t            s2.chars().map(n -> c == (char)n ? 1 : 0).sum());\n\t    }\n\t    \n\t    return o;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/DeleteDigit.java",
    "content": "final class DeleteDigit {\n\n\tint deleteDigit(int n) {\n\t    int max = 0, len = (n+\"\").length();\n\t    \n\t    for(int i = 0; i < len; i++) {\n\t        String tmp = \"\";\n\t        for(int j = 0; j < len; j++) if(j != i) tmp += (n+\"\").charAt(j);\n\t        int v = new Integer(tmp);\n\t        if(v > max) max = v;\n\t    }\n\t    \n\t    return max;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/DepositProfit.java",
    "content": "final class DepositProfit {\n\n\tint depositProfit(int deposit, int rate, int threshold) {\n\t    float d = deposit;\n\t    for(int y = 1;; y++) if((d += rate / 100f * d) >= threshold) return y;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/DifferentSquares.java",
    "content": "import java.util.Set;\nimport java.util.HashSet;\n\nfinal class DifferentSquares {\n\n\tint differentSquares(int[][] matrix) {\n\t    Set<String> set = new HashSet<>();\n\t    \n\t    for(int x = 0; x < matrix.length - 1; x++) {\n\t        for(int y = 0; y < matrix[0].length - 1; y++) {\n\t            String aux = \"\";\n\t            for(int i = x; i < x + 2; i++)\n\t                for(int j = y; j < y + 2; j++) aux += matrix[i][j];\n\t            set.add(aux);\n\t        }\n\t    }\n\t    \n\t    return set.size();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/DifferentSymbolsNaive.java",
    "content": "final class DifferentSymbolsNaive {\n\n\tint differentSymbolsNaive(String s) {\n\t    return s.chars().distinct().toArray().length;\n\t}\n\n}"
  },
  {
    "path": "Arcade/Intro/Java/DigitDegree.java",
    "content": "final class DigitDegree {\n\n\tint digitDegree(int n) {\n\t    int counter = 0;\n\t    \n\t    for(; (n+\"\").length() > 1; counter++)\n\t        n = (n+\"\").chars().map(e -> new Integer((char)e+\"\")).sum();\n\t        \n\t    return counter;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/DigitsProduct.java",
    "content": "final class DigitsProduct {\n\n\tint digitsProduct(int product) {\n\t    if(product == 0) return 10;\n\t    if(product < 10) return product;\n\n\t    String s = \"\";\n\t    for(int d = 9; d > 1; d--) for(; product % d == 0; product /= d) s = d+s;\n\t    return product == 1 ? Integer.parseInt(s) : -1;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ElectionsWinners.java",
    "content": "import java.util.Arrays;\n\nfinal class ElectionsWinners {\n\n\tint electionsWinners(int[] votes, int k) {\n\t    int winners = 0;\n\t    for(int i = 0; i < votes.length; i++) {\n\t        int v = votes[i];\n\t        votes[i] = 0;\n\t        if(Arrays.stream(votes).allMatch(e -> v + k > e)) winners++;\n\t        votes[i] = v;\n\t    }\n\n\t    return winners;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/EvenDigitsOnly.java",
    "content": "final class EvenDigitsOnly {\n\t\n\tboolean evenDigitsOnly(int n) {\n\t    return (n+\"\").chars().allMatch(e -> new Integer(e+\"\") % 2 == 0);\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ExtractEachKth.java",
    "content": "import java.util.stream.IntStream;\n\npublic final class ExtractEachKth {\n\n\tint[] extractEachKth(int[] inputArray, int k) {\n\t    return IntStream.range(0, inputArray.length)\n\t    .filter(i -> (i + 1) % k != 0).map(i -> inputArray[i]).toArray();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/FileNaming.java",
    "content": "import java.util.Vector;\n\nfinal class FileNaming {\n\n\tString[] fileNaming(String[] names) {\n\t    Vector<String> vector = new Vector<>();\n\t    \n\t    for(int i = 0; i < names.length; i++) {\n\t        String aux = names[i];\n\t        for(int k = 1; vector.contains(aux); k++) aux = names[i]+\"(\"+k+\")\";\n\t        vector.add(aux);\n\t        names[i] = aux;\n\t    }\n\t    \n\t    return names;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/FindEmailDomain.java",
    "content": "final class FindEmailDomain {\n\n\tString findEmailDomain(String address) {\n\t\tString[] pieces = address.split(\"@\");\n\t\treturn pieces[pieces.length - 1];\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/FirstDigit.java",
    "content": "final class FirstDigit {\n\n\tchar firstDigit(String inputString) {\n\t    return (char) inputString.chars()\n\t    .filter(e -> ((char)e+\"\").matches(\"\\\\d\")).toArray()[0];\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/GrowingPlant.java",
    "content": "public final class GrowingPlant {\n\n\tint growingPlant(int upSpeed, int downSpeed, int desiredHeight) {\n\t\tint count = 0, height = 0;\n\t\twhile(true) {\n\t\t\theight += upSpeed;\n\t\t\tcount++;\n\t\t\tif(height >= desiredHeight) { break; }\n\t\t\theight -= downSpeed;\n\t\t}\n\t\treturn count;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/IsBeautifulString.java",
    "content": "final class IsBeautifulString {\n\n\tboolean isBeautifulString(String inputString) {\n\t    byte[] abc = new byte[26];\n\t    for(char c : inputString.toCharArray()) abc[c - 'a']++;\n\t    for(byte i = 0; i < 25; i++) if(abc[i + 1] > abc[i]) return false;\n\t    return true;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/IsDigit.java",
    "content": "final class IsDigit {\n\n\tboolean isDigit(char symbol) {\n\t    return (symbol+\"\").matches(\"\\\\d\");\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/IsIPv4Address.java",
    "content": "final class IsIPv4Address {\n\n\tboolean isIPv4Address(String inputString) {\n\t    String[] split = inputString.split(\"\\\\.\");\n\t    if(split.length != 4) return false;\n\t    for(String s : split) {\n\t        if(s.matches(\"\\\\d*[a-z]+\\\\d*\") || s.length() == 0) return false;\n\t        if(s.length() > 1 && (s.charAt(0) == '0' || new Long(s) > 255)) {\n\t            return false;   \n\t        }\n\t    }\n\t    return true;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/IsLucky.java",
    "content": "final class IsLucky {\n\t\n\tboolean isLucky(int n) {\n\t    String ticket = n+\"\";    \n\t    return ticket\n\t        .substring(0, ticket.length() / 2)\n\t        .chars().map(q -> new Integer((char)q+\"\")).sum() ==\n\t        ticket\n\t        .substring(ticket.length() / 2, ticket.length())\n\t        .chars().map(q -> new Integer((char)q+\"\")).sum();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/IsMAC48Adress.java",
    "content": "final class IsMAC48Adress {\n\n\tboolean isMAC48Address(String inputString) {\n\t    return inputString.matches(\"[0-9A-F]{2}(-[0-9A-F]{2}){5}\");\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/KnapsackLight.java",
    "content": "final class KnapsackLight {\n\n\tint knapsackLight(int value1, int weight1, int value2, int weight2, int maxW) {\n\t    if(maxW >= weight1 + weight2) return (value1 + value2);\n\t    else if(value2 > value1 && maxW >= weight2) return value2;\n\t    else if(value1 > value2 && maxW >= weight1) return value1;\n\t    else if(maxW >= weight1) return value1;\n\t    else if(maxW >= weight2) return value2;\n\t\treturn 0;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/LineEnconding.java",
    "content": "import java.util.List;\nimport java.util.ArrayList;\n\nfinal class LineEnconding {\n\n\tString lineEncoding(String s) {\n\t    List<String> subs = new ArrayList<>();\n\t    String aux = \"\", out = \"\";\n\t    char prev = s.charAt(0);\n\t    \n\t    for(int i = 0; i < s.length(); i++) {\n\t        char curr = s.charAt(i);\n\t        if(curr != prev) {\n\t            subs.add(aux);\n\t            aux = (prev = curr)+\"\";\n\t            continue;\n\t        }\n\t        aux += prev = curr;\n\t    }\n\t    subs.add(aux);\n\t    \n\t    for(String v : subs) out += \"\"+(v.length() > 1 ? v.length() : \"\")+v.charAt(0);\n\t        \n\t    return out;\n\t}\n\n}"
  },
  {
    "path": "Arcade/Intro/Java/LongestDigitsPrefix.java",
    "content": "final class LongestDigitsPrefix {\n\n\tString longestDigitsPrefix(String inputString) {\n\t   String output = \"\";\n\t   \n\t   for(char ch : inputString.toCharArray()) {\n\t       if((ch+\"\").matches(\"\\\\d\")) output += ch;\n\t       else break;\n\t   }\n\t   \n\t   return output;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/LongestWord.java",
    "content": "import java.util.Arrays;\n\nfinal class LongestWord {\n\n\tString longestWord(String text) {\n\t    return Arrays.stream(text.replaceAll(\"\\\\p{Punct}\", \" \").split(\" \"))\n\t    .reduce((v, c) -> c = v.length() > c.length() ? v : c).get();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/MakeArrayConsecutive2.java",
    "content": "import java.util.Arrays;\nimport java.util.stream.IntStream;\n\nfinal class MakeArrayConsecutive2 {\n\n\tint makeArrayConsecutive2(int[] statues) {\n\t    Arrays.sort(statues);\n\t    return IntStream.rangeClosed(statues[0], statues[statues.length - 1])\n\t        .toArray().length - statues.length;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/MatrixElementsSum.java",
    "content": "public class MatrixElementsSum {\n\t\n\tint matrixElementsSum(int[][] matrix) {\n\t\tint sum = 0;\n\t\tfor(int i = 0; i < matrix[0].length; i++) {\n\t\t\tfor(int j = 0; j < matrix.length; j++) {\n\t\t\t\tif(matrix[j][i] == 0) break;\n\t\t\t\tsum += matrix[j][i];\n\t\t\t}\n\t\t}\n\t\treturn sum;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/MessageFromBinaryCode.java",
    "content": "import java.util.stream.Collectors;\nimport java.util.Arrays;\n\nfinal class MessageFromBinaryCode {\n\n\tString messageFromBinaryCode(String code) {\n\t    return Arrays.stream(code.split(\"(?<=\\\\G.{8})\"))\n\t    .map(v -> (char)Integer.parseInt(v, 2)+\"\").collect(Collectors.joining());\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/Minesweeper.java",
    "content": "final class Minesweeper {\n\n\tint[][] minesweeper(boolean[][] matrix) {\n\t    int w = matrix[0].length, h = matrix.length;\n\t    int[][] board = new int[h][w];\n\t    \n\t    for(int i = 0; i < h; i++) {\n\t        for(int j = 0; j < w; j++) {\n\t            if(matrix[i][j]) {\n\t                if(i + 1 < h) board[i + 1][j]++;\n\t                if(i + 1 < h && j - 1 >= 0) board[i + 1][j - 1]++;\n\t                if(j - 1 >= 0) board[i][j - 1]++;\n\t                if(i - 1 >= 0 && j + 1 < w) board[i - 1][j + 1]++;\n\t                if(i - 1 >= 0) board[i - 1][j]++;\n\t                if(i - 1 >= 0 && j - 1 >= 0) board[i - 1][j - 1]++;\n\t                if(j + 1 < w) board[i][j + 1]++;\n\t                if(i + 1 < h && j + 1 < w) board[i + 1][j + 1]++;\n\t            }\n\t        }\n\t    }\n\t    \n\t    return board;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/PalindromeRearranging.java",
    "content": "import java.util.Arrays;\n\nfinal class PalindromeRearranging {\n\n\tboolean palindromeRearranging(String inputString) {\n\t\tint[] abc = new int[26];\n\t    for(int i = 0; i < inputString.length(); i++) {\n\t        abc[inputString.charAt(i) - 'a']++;\n\t    }\t\n\t    \n\t    return inputString.length() % 2 ==\n\t    Arrays.stream(abc).map(n -> n % 2 == 1 ? 1 : 0).sum();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/RemoveKFromList.java",
    "content": "final class RemoveKFromList {\n\t\n\t// Singly-linked lists are already defined with this interface:\n\t// class ListNode<T> {\n\t//   ListNode(T x) {\n\t//     value = x;\n\t//   }\n\t//   T value;\n\t//   ListNode<T> next;\n\t// }\n\t//\n\tListNode<Integer> removeKFromList(ListNode<Integer> l, int k) {\n\t    ListNode<Integer> out = new ListNode<>(null), ref = out;\n\t    \n\t    for(; l != null; l = l.next) {\n\t        if(l.value != k) {\n\t            ref.next = new ListNode<>(l.value);\n\t            ref = ref.next;\n\t        }\n\t    }\n\t    \n\t    return out.next;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ReverseInParentheses.java",
    "content": "import java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\nfinal class ReverseInParentheses {\n\n    String reverseInParentheses(String inputString) {\n        Matcher mt = Pattern.compile(\"\\\\(\\\\w*\\\\)\").matcher(inputString);\n        if(!mt.find()) return inputString;\n        String str = mt.group(),\n            revStr = str.replace(\")\", \"\").replace(\"(\", \"\");\n        return reverseInParentheses(inputString.replace(str,\n            new StringBuilder(revStr).reverse().toString()));\n    }\n}"
  },
  {
    "path": "Arcade/Intro/Java/ShapeArea.java",
    "content": "public class ShapeArea {\n\n\tint shapeArea(int n) {\n\t    return IntStream.range(0, n).map(p -> (p - n) * -1)\n\t        .map(q -> (q - 1) * 4).sum() + 1;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/SortByHeight.java",
    "content": "import java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class SortByHeight {\n\t\n\tint[] sortByHeight(int[] a) {\n\t\tfor(int i = 0; i < a.length; i++) {\n\t        for(int j = i + 1; j < a.length; j++) {\n\t            if(a[i] != -1 && a[j] != -1) {\n\t                if(a[i] > a[j]) {\n\t                    int tmp = a[i];\n\t                    a[i] = a[j];\n\t                    a[j] = tmp;\n\t                }\n\t            }\n\t        }\n\t    }\n\t    \n\t    return a;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/SpiralNumbers.java",
    "content": "final class SpiralNumbers {\n\n\tint[][] spiralNumbers(int n) {\n\t    int[][] spiral = new int[n][n];\n\t    int left = 0, right = n - 1, top = 0, down = n - 1;\n\t    \n\t    for(int adder = 1; adder <= n * n; ) {\n\t        for(int x = left; x <= right; x++) spiral[top][x] = adder++;\n\t        top++;\n\t        \n\t        for(int y = top; y <= down; y++) spiral[y][right] = adder++;\n\t        right--;\n\t        \n\t        for(int x = right; x >= left; x--) spiral[down][x] = adder++;\n\t        down--;\n\t        \n\t        for(int y = down; y >= top; y--) spiral[y][left] = adder++;\n\t        left++;\n\t    }\n\t    \n\t    return spiral;\n\t}\n\t\n}"
  },
  {
    "path": "Arcade/Intro/Java/StringsRearrangement.java",
    "content": "import java.util.Arrays;\nimport java.util.ArrayList;\n\nfinal class StringsRearrangement {\n\n\tboolean flag;\n\n\tboolean check(String s1, String s2) {\n\t    int counter = 0;\n\t   \n\t    for(int i = 0; i < s1.length(); i++)\n\t        if(s1.charAt(i) != s2.charAt(i)) counter++;\n\t    \n\t    return counter == 1;\n\t}\n\n\tvoid permute(String[] arr, int l, int h) {\n\t    if(l == h) {\n\t        flag = true;\n\t        for(int i = 0; i < arr.length - 1; i++)\n\t            if(!check(arr[i], arr[i + 1])) {\n\t                flag = false;\n\t                break;\n\t            }\n\t    }\n\t    else {\n\t        for(int i = l; i <= h && !flag; i++) {\n\t            swap(arr, l, i);\n\t            permute(arr, l + 1, h);\n\t            swap(arr, l, i);\n\t        }\n\t    }\n\t}\n\n\tvoid swap(String[] arr, int i, int j) {\n\t    String tmp = arr[i];\n\t    arr[i] = arr[j];\n\t    arr[j] = tmp;\n\t}\n\n\tboolean stringsRearrangement(String[] inputArray) {\n\t    permute(inputArray, 0, inputArray.length - 1);\n\t    return flag;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/Sudoku.java",
    "content": "import java.util.Arrays;\n\nfinal class Sudoku {\n\n\tboolean sudoku(int[][] grid) {\n\t    int n = grid.length, sqrt = (int) Math.sqrt(n);\n\t    int[] row = new int[n], col = new int[n], box = new int[n];\n\n\t    for(int i = 0; i < n; i++) {\n\t        for(int j = 0; j < n; j++) {\n\t            row[grid[i][j] - 1]++;\n\t            col[grid[j][i] - 1]++;   \n\t        }\n\t        \n\t        int sq = i - i % sqrt;\n\t        for(int y = sq; y < sq + sqrt; y++) {\n\t            for(int x = sq; x < sq + sqrt; x++) box[grid[y][x] - 1]++;\n\t        }\n\t        \n\t        for(int j = 0; j < n; j++)\n\t            if(row[j] == 0 || col[j] == 0 || box[j] == 0) return false;\n\t        \n\t        Arrays.fill(box, 0);\n\t        Arrays.fill(row, 0);\n\t        Arrays.fill(col, 0);\n\t    }\n\n\t    return true;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/SumUpNumbers.java",
    "content": "final class SumUpNumbers {\n\n\tint sumUpNumbers(String inputString) {    \n\t    return Arrays.stream(inputString.replaceAll(\"[^\\\\d]\", \" \").split(\" \"))\n\t    .mapToInt(e -> !e.isEmpty() ? Integer.parseInt(e) : 0).sum();\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/ValidTime.java",
    "content": "final class ValidTime {\n\n\tboolean validTime(String time) {\n\t    String[] dig = time.split(\":\");\n\t    return new Integer(dig[0]) < 24 && new Integer(dig[1]) < 60;\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Java/VariableName.java",
    "content": "final class VariableName {\n\n\tboolean variableName(String name) {\n\t    return name.matches(\"^[a-zA-Z_]\\\\w*\");\n\t}\n}"
  },
  {
    "path": "Arcade/Intro/Python/stringsRearrangement.py",
    "content": "import itertools\n\ndef isDifferByOneChar(str1, str2):\n\tcount = 0\n\tfor i in range(len(str1)):\n\t\tif str1[i] != str2[i]:\n\t\t\tcount += 1\n\treturn count == 1\n\ndef stringsRearrangement(inputArray):\n\tpossiblePermutations = itertools.permutations(inputArray)\n\tfor per in possiblePermutations:\n\t\tallMatch = True\n\t\tfor i in range(len(per) - 1):\n\t\t\tif not isDifferByOneChar(per[i], per[i + 1]):\n\t\t\t\tallMatch = False\n\t\t\t\tbreak\n\t\tif allMatch:\n\t\t\treturn True\n\treturn False"
  },
  {
    "path": "Arcade/Intro/Ruby/absoluteValuesSumMinimization.rb",
    "content": "def absoluteValuesSumMinimization(a)\n\treturn a[(a.size - 1) / 2]\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/add.rb",
    "content": "def add(param1, param2)\n    return param1 + param2\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/addBorder.rb",
    "content": "def addBorder(picture)\n\tborder = \"*\" * (picture[0].size + 2)\n\treturn picture.map{|e| \"*\"+e+\"*\"}.insert(0, border).push border\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/adjacentElementsProduct.rb",
    "content": "def adjacentElementsProduct(inputArray)\n\tmax = inputArray[0] * inputArray[1]\n\t(inputArray.size - 1).times do |i|\n\t\tq = inputArray[i] * inputArray[i + 1]\n\t\tmax = q if q > max\n\tend\n\treturn max\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/allLongestStrings.rb",
    "content": "def allLongestStrings(a)\n\treturn a.filter{|e| e.size == a.map{|e| e.size}.max}\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/almostIncreasingSequence.rb",
    "content": "def almostIncreasingSequence(sequence)\n\tl, lp, c = -100000, l, c = 0\n    \n    sequence.each do |e|\n        if e <= l\n            c += 1\n            l = e if e > lp\n            next\n        end\n        lp = l;\n        l = e;\n    end\n    \n    return c <= 1;\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/alphabeticShift.rb",
    "content": "def alphabeticShift(inputString)\n    return inputString.chars\n        .map{|c| c == 'z' ? 'a' : (c.ord + 1).chr}.join\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/alternatingSums.rb",
    "content": "def alternatingSums(a)\n\tdef alternatingSums(a)\n\t    o = [0, 0]\n\t\ta.size.times{|i| o[(i + 1) % 2 == 0 ? 1 : 0] += a[i]}\n\t\treturn o\n\tend\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/areEquallyStrong.rb",
    "content": "def areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight)\n\tyl, yr, fl, fr = yourLeft, yourRight, friendsLeft, friendsRight\n\treturn ((yl == fl and yr == fr) or (yr == fl and yl == fr))\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/areSimilar.rb",
    "content": "def areSimilar(a, b)\n    c = 0\n    a.size.times {|i| c += 1 if a[i] != b[i]}\n    return a.sort == b.sort && c < 3\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/arrayChange.rb",
    "content": "def arrayChange(inputArray)\n\tc = 0\n\t(inputArray.size - 1).times do |i|\n\t\twhile inputArray[i + 1] <= inputArray[i] do\n\t\t\tinputArray[i +1] += 1\n\t\t\tc += 1\n\t\tend\n\tend\n\treturn c\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/arrayMaxConsecutiveSum.rb",
    "content": "def arrayMaximalAdjacentDifference(inputArray)\n    return (0..(inputArray.size - 2)).to_a\n    \t.map{|i| (inputArray[i + 1] - inputArray[i]).abs}.max\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/arrayMaximalAdjacentDifference.rb",
    "content": "def arrayMaxConsecutiveSum(inputArray, k)\n    max = t = 0\n    \n    (0..(inputArray.size - k)).each do |i|\n        t = (i...(i + k)).to_a.map{|j| inputArray[j]}.sum\n        max = t if t > max\n    end\n    \n    return max\nend\n"
  },
  {
    "path": "Arcade/Intro/Ruby/arrayReplace.rb",
    "content": "def arrayReplace(inputArray, elemToReplace, substitutionElem)    \n    return inputArray.map{|e| e == elemToReplace ? substitutionElem : e}\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/avoidObstacles.rb",
    "content": "def avoidObstacles(inputArray)\n\tk, i = true, 2\n    loop do\n        inputArray.each do |e|\n            if e % i == 0\n                k = !k\n                break\n            end\n        end\n        return i if k\n        k, i = true, i + 1\n    end\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/bishopAndPawn.rb",
    "content": "def bishopAndPawn(bishop, pawn)\n\treturn (bishop[0].ord - pawn[0].ord).abs a== (bishop[1].ord - pawn[1].ord).abs\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/boxBlur.rb",
    "content": "def boxBlur(image)\n    h, w = image.size - 2, image[0].size - 2\n    sum = Array.new(h) {Array.new(w,[])}\n    (1..h).each do |i|\n        (1..w).each do |j|\n            c =\n                image[i-1][j-1]+image[i-1][j]+image[i-1][j+1]+\n                image[i][j-1]+image[i][j]+image[i][j+1]+\n                image[i+1][j-1]+image[i+1][j]+image[i+1][j+1]\n            sum[i-1][j-1] = c / 9\n        end\n    end\n    return sum\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/buildPalindrome.rb",
    "content": "def buildPalindrome(st)\n\treturn st if st.reverse.eql? st\n\tout = sg = \"\"\n\tst.each_char{|ch|\n\treturn out if (out = st+(sg += ch.to_s).reverse).reverse.eql? out}\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/centuryFromYear.rb",
    "content": "def centuryFromYear(year)\n\treturn year / 100 + 1 if(year / 100 * 100 < year)\n\treturn year / 100\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/checkPalindrome.rb",
    "content": "def checkPalindrome(inputString)\n    return inputString.reverse == inputString;\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/chessBoardCellColor.rb",
    "content": "def chessBoardCellColor(cell1, cell2)\n    x1, x2 = cell1[0].ord, cell1[1].ord\n    y1, y2 = cell2[0].ord, cell2[1].ord\n    return ((x1 + x2) % 2 == (y1 + y2) % 2)\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/chessKnight.rb",
    "content": "def isSafe(x, y)\n    return (x >= 0 and x < 8 and y >= 0 and y < 8);\nend\n\ndef chessKnight(cell)\n    x, y, out = cell[0].ord - 97, cell[1].to_i - 1, 0\n    \n    out += 1 if isSafe(x + 2, y + 1);\n    out += 1 if isSafe(x + 2, y - 1);\n    out += 1 if isSafe(x - 2, y + 1);\n    out += 1 if isSafe(x - 2, y - 1);\n    out += 1 if isSafe(x + 1, y + 2);\n    out += 1 if isSafe(x - 1, y + 2);\n    out += 1 if isSafe(x + 1, y - 2);\n    out += 1 if isSafe(x - 1, y - 2);\n    \n    return out;\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/circleOfNumbers.rb",
    "content": "def circleOfNumbers(n, firstNumber)\n    return (firstNumber + n / 2) % n\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/commonCharacterCount.rb",
    "content": "def commonCharacterCount(s1, s2)\n\tq = (0x61..0x7b).to_a.filter{|e| s1.include?(e.chr) && s2.include?(e.chr)}\n\t\t.map{|e| e.chr}.join\n\to = 0\n\t\t\n\tq.chars.each do |e|\n\t\tm = s1.chars.filter{|s| s == e}.length\n\t\tn = s2.chars.filter{|s| s == e}.length\n\t\to += m < n ? m : n\n\tend\n\treturn o\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/deleteDigit.rb",
    "content": "def deleteDigit(n)\n    max, s = 0, n.to_s\n    s.size.times do |i|\n        v = (0..s.size).to_a.filter{|j| j != i}.map{|j| s[j]}.join.to_i\n        max = v if v > max\n    end\n    return max\nend\n"
  },
  {
    "path": "Arcade/Intro/Ruby/depositProfit.rb",
    "content": "def depositProfit(deposit, rate, threshold)\n    y = 1\n    loop do\n        return y if (deposit += rate / 100.0 * deposit) >= threshold\n        y += 1\n    end\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/differentSquares.rb",
    "content": "def differentSquares(matrix)\n    set = []\n    (matrix.size - 1).times do |x|\n        (matrix[0].size - 1).times do |y|\n            aux = \"\"\n            (x..x+1).to_a.each{|i|\n            (y..y+1).to_a.each{|j| aux += matrix[i][j].to_s}}\n            set.push aux if !set.include?(aux)\n        end\n    end\n    return set.size\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/differentSymbolsNaive.rb",
    "content": "def differentSymbolsNaive(s)\n    s.chars.uniq.size\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/digitDegree.rb",
    "content": "def digitDegree(n)\n    counter = 0\n    \n    while n.to_s.size > 1\n        n = n.to_s.chars.map{|e| e.to_i}.sum\n        counter += 1\n    end\n    \n    return counter\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/digitsProduct.rb",
    "content": "def digitsProduct(product)\n    return 10 if product == 0\n    return product if product < 10\n\n    s = \"\";\n    9.downto(2).each do |d|\n        while product % d == 0\n            s = d.to_s+s\n            product /= d\n        end\n    end\n    return product == 1 ? s.to_i : -1;\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/electionsWinners.rb",
    "content": "def electionsWinners(votes, k)\n    winners = 0\n    votes.size.times do |i|\n        win = true\n        votes.size.times do |j|\n            if i != j and votes[i] + k <= votes[j]\n                win = !win\n                break\n            end\n        end\n        winners += 1 if win\n    end\n    return winners\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/evenDigitsOnly.rb",
    "content": "def evenDigitsOnly(n)\n    return n.to_s.chars.all?{|e| e.to_i % 2 == 0}\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/extractEachKth.rb",
    "content": "def extractEachKth(inputArray, k)\n    return (0...inputArray.size).to_a\n    .filter{|i| (i + 1) % k != 0}.map{|i| inputArray[i]}\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/fileNaming.rb",
    "content": "def fileNaming(names)\n    set = []\n    names.size.times do |i|\n        aux, k = names[i], 1\n        while set.include? aux\n            aux = names[i]+\"(\"+k.to_s+\")\"\n            k += 1\n        end\n       set.push aux\n    end\n    \n    return set\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/findEmailDomain.rb",
    "content": "def findEmailDomain(address)\n    pieces = address.split /@/\n    return pieces[pieces.size - 1]\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/firstDigit.rb",
    "content": "def firstDigit(inputString)\n    return inputString.chars.filter{|e| /\\d/.match? e}[0]\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/growingPlant.rb",
    "content": "def growingPlant(upSpeed, downSpeed, desiredHeight)\n    c = h = 0\n    loop do\n        h += upSpeed\n        c += 1\n        break if h >= desiredHeight\n        h -= downSpeed\n    end\n    return c\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/isBeautifulString.rb",
    "content": "def isBeautifulString(inputString)\n\tabc = Array.new(26, 0)\n\tinputString.each_byte{|b| abc[b - 97] += 1}\n\t25.times{|i| return false if abc[i + 1] > abc[i]}\n\treturn true\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/isDigit.rb",
    "content": "def isDigit(symbol)\n    return symbol.match? /\\d/\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/isIPv4Address.rb",
    "content": "def isIPv4Address(inputString)\n    split = inputString.split /\\./\n    return false if split.size != 4\n    split.each do |e|\n        return false if /\\d*[a-z]+\\d*/.match?(e) or e.size == 0\n        return false if e.size > 1 and (e[0] == '0' || e.to_i > 255)\n    end\n    return true\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/isLuck.rb",
    "content": "def isLucky(n)\n    str = n.to_s\n    return str[0...str.size / 2].chars.map{|e| e.to_i}.sum ==\n    str[(str.size / 2)..str.size].chars.map{|e| e.to_i}.sum\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/isMAC48Address.rb",
    "content": "def isMAC48Address(inputString)\n    return /[0-9A-F]{2}(-[0-9A-F]{2}){5}/.match(inputString).to_s.eql?(inputString)\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/isPowerOfTwo2.rb",
    "content": "def isPowerOfTwo2 n\n    return n > 0 && (n & n - 1) == 0;\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/knapsackLight.rb",
    "content": "def knapsackLight(value1, weight1, value2, weight2, maxW)\n    return value1 + value2 if maxW >= weight1 + weight2\n    return value2 if value2 > value1 and maxW >= weight2\n    return value1 if value1 > value2 and maxW >= weight1\n    return value1 if maxW >= weight1\n    return value2 if maxW >= weight2\n    return 0\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/lineEncoding.rb",
    "content": "def lineEncoding(s)\n    subs, aux, prev = [], \"\", s[0]\n    \n    s.size.times do |i|\n        if s[i] != prev\n            subs.push aux\n            aux = prev = s[i]\n            next\n        end\n        aux += prev = s[i]\n    end\n    subs.push aux\n    \n    return subs.map{|v| v.size > 1 ? v.size.to_s+v[0] : v[0]}.join\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/longestDigitsPrefix.rb",
    "content": "def longestDigitsPrefix(inputString)\n    out = \"\"\n    \n    inputString.chars.to_a.each do |c|\n        if /\\d/.match? c then out += c\n        else break\n        end\n    end\n    \n    return out;\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/longestWord.rb",
    "content": "def longestWord(text)\n    return text.gsub(/[^a-zA-Z ]/, \" \")\n    .split(/ /).sort{|a, b| b.size <=> a.size}[0]\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/makeArrayConsecutive2.rb",
    "content": "def makeArrayConsecutive2(statues)\n    return (statues.min..statues.max).to_a.size - statues.size\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/matrixElementsSum.rb",
    "content": "def matrixElementsSum(matrix)\n\tsum = 0\n\tmatrix[0].size.times do |i|\n\t\tmatrix.size.times do |j|\n\t\t\tbreak if matrix[j][i] == 0\n\t\t\tsum += matrix[j][i]\n\t\tend\n\tend\n\treturn sum\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/messageFromBinaryCode.rb",
    "content": "def messageFromBinaryCode(code)\n    return code.split(/(?<=\\G.{8})/).map{|v| v.to_i(2).chr}.join\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/palindromeRearranging.rb",
    "content": "def palindromeRearranging(inputString)\n    abc = Array.new(26, 0)\n    inputString.size.times{|i| abc[inputString[i].ord - \"a\".ord] += 1}\n    return inputString.size % 2 ==\n    abc.map{|e| e % 2 == 1 ? 1 : 0}.sum\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/reverseInParentheses.rb",
    "content": "def reverseInParentheses(inputString)\n    reg = /\\(\\w*\\)/\n\treturn inputString unless reg.match? inputString\n\ts = reg.match(inputString).to_s\n\treturn reverseInParentheses inputString.gsub(s, s[1..(s.size - 2)].reverse)\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/shapeArea.rb",
    "content": "def shapeArea(n)\n    area = 1\n    n.downto(1){|e| area += (e - 1) * 4}\n    return area\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/sortByHeight.rb",
    "content": "def sortByHeight(a)\n    a.size.times do |i|\n\t\t(i..(a.size - 1)).each do |j|\n\t\t\tif a[i] != -1 && a[j] != -1\n                if a[i] > a[j]\n                    tmp = a[i]\n                    a[i] = a[j]\n                    a[j] = tmp\n                end\n            end\n\t\tend\n\tend\n\t\n\treturn a\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/sudoku.rb",
    "content": "def sudoku(grid)\n    row, col, box = Array.new(9, 0), Array.new(9, 0), Array.new(9, 0)\n    n = grid.size\n    sqrt = Math.sqrt(n).to_i\n    \n    n.times do |i|\n        n.times do |j|\n            row[grid[i][j] - 1] += 1\n            col[grid[j][i] - 1] += 1\n        end\n        \n        sq = i - i % sqrt\n        (sq...(sq + sqrt)).each do |y|\n            (sq...(sq + sqrt)).each{|x| box[grid[y][x] - 1] += 1}\n        end\n        \n        n.times do |j|\n            return false if col[j] == 0 or row[j] == 0 or  box[j] == 0\n        end\n        \n        box = box.fill 0\n        row = row.fill 0\n        col = col.fill 0\n    end\n    \n    return true\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/sumUpNumbers.rb",
    "content": "def sumUpNumbers(inputString)\n    sum, aux = 0, \"\"\n    inputString.sub!(/[^\\d]/, \" \")\n    \n    inputString.size.times do |i|\n        if /\\D/.match? inputString[i]\n            sum += aux.to_i\n            aux = \"\"\n            i -= 1\n            next\n        end\n        aux += inputString[i]\n    end\n    sum += aux.to_i\n    \n    return sum\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/validTime.rb",
    "content": "def validTime(time)\n    return (time[0..1].to_i < 24 and time[3..4].to_i < 60)\nend"
  },
  {
    "path": "Arcade/Intro/Ruby/variableName.rb",
    "content": "def variableName(name)\n    return /^[a-zA-Z_]\\w*/.match(name).to_s.eql? name\nend"
  },
  {
    "path": "Arcade/Intro/javascript/absoluteValuesSumMinimization.js",
    "content": "function absoluteValuesSumMinimization(a) {\n    return a[Math.floor((a.length - 1) / 2)];\n}"
  },
  {
    "path": "Arcade/Intro/javascript/addBorder.js",
    "content": "function addBorder(picture) {\n    let border = \"*\".repeat(picture[0].length + 2), o = [border];\n    for(let e of picture) o.push(\"*\"+e+\"*\");\n    o.push(border);\n    return o;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/adjacentElementsProduct.js",
    "content": "function adjacentElementsProduct(inputArray) {\n    let max = inputArray[0] * inputArray[1];\n    \n    for(let i = 0; i < inputArray.length - 1; i++) {\n        let p = inputArray[i] * inputArray[i + 1];\n        if(p > max) max = p;\n    }\n    \n    return max;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/allLongestStrings.js",
    "content": "function allLongestStrings(inputArray) {\n    let max = inputArray.map( (e) => e.length)\n        .reduce( (t, e) => t = e > t ? e: t);\n    return inputArray.filter( (e) => e.length == max);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/almostIncreasingSequence.js",
    "content": "function almostIncreasingSequence(sequence) {\n    let l = -0x186a0, lp = -0x186a0, c = 0;\n    \n    for(let e of sequence) {\n        if(e <= l) {\n            c++;\n            if(e > lp) l = e;\n            continue;\n        }\n        lp = l;\n        l = e;\n    }\n    \n    return c <= 1;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/alphabeticShift.js",
    "content": "function alphabeticShift(inputString) {\n    let chars = [];\n    for(let c of inputString) {\n        chars.push(c === 'z' \n            ? 'a'\n            : String.fromCharCode((c.charCodeAt(0) + 1)));\n    }\n    return chars.join(\"\");\n}"
  },
  {
    "path": "Arcade/Intro/javascript/alternatingSums.js",
    "content": "function alternatingSums(a) {\n    let o = [0, 0];\n    for(let i in a) o[i % 2 == 0 ? 0 : 1] += a[i];\n    return o;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/areEquallyStrong.js",
    "content": "function areEquallyStrong(yourLeft, yourRight, friendsLeft, friendsRight) {\n    let yl = yourLeft, yr = yourRight, fl = friendsLeft, fr = friendsRight;\n    return (yl == fl && yr == fr || yr == fl && yl == fr);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/areSimilar.js",
    "content": "function areSimilar(a, b) {\n    let c = 0;\n    for(let i in a) if(a[i] != b[i]) c++;\n    a.sort();\n    b.sort();\n    for(let i in a) if(a[i] != b[i]) return false;\n    return c < 3;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/arrayChange.js",
    "content": "function arrayChange(inputArray) {\n    let c = 0;\n    for(let i = 0; i < inputArray.length - 1; i++) {\n        while(inputArray[i + 1] <= inputArray[i]) {\n            inputArray[i + 1]++;\n            c++;\n        }\n\t}\n\treturn c;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/arrayMaxConsecutiveSum.js",
    "content": "function arrayMaxConsecutiveSum(inputArray, k) {\n    let max = 0, t = 0;\n       \n    for(let i = 0; i <= inputArray.length - k; i++, t = 0) {\n        for(let j = i; j < i + k; j++) t += inputArray[j];\n        if(t > max) max = t;\n    }\n    \n    return max;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/arrayMaximalAdjacentDifference.js",
    "content": "function arrayMaximalAdjacentDifference(inputArray) {\n    let max = 0;\n    for(let i = 0; i < inputArray.length - 1; i++) {\n        let t = Math.abs(inputArray[i] - inputArray[i + 1]);\n        if(t > max) max = t;\n    }\n    return max;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/arrayReplace.js",
    "content": "function arrayReplace(inputArray, elemToReplace, substitutionElem) {\n    return inputArray.map(n => n === elemToReplace ? substitutionElem : n);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/avoidObstacles.js",
    "content": "function avoidObstacles(inputArray) {\n    let k = true;\n    for(let i = 2; ; i++) {\n        for(let o of inputArray) {\n            if(o % i == 0) {\n                k = !k;\n                break;\n            }\n        }\n        if(k) return i;\n        k = true;\n    }\n}"
  },
  {
    "path": "Arcade/Intro/javascript/bishopAndPawn.js",
    "content": "function bishopAndPawn(bishop, pawn) {\n    return Math.abs(bishop.charCodeAt(0) - pawn.charCodeAt(0))\n    == Math.abs(bishop.charCodeAt(1) - pawn.charCodeAt(1));\n}"
  },
  {
    "path": "Arcade/Intro/javascript/boxBlur.js",
    "content": "function boxBlur(image) {\n    let h = image.length - 2, w = image[0].length - 2;\n    let sumH = [];\n    for(let i = 1; i <= h; i++) {\n        let sumW = [];\n        for(let j = 1; j <= w; j++) {\n            let c =\n                image[i - 1][j - 1] + image[i - 1][j] + image[i - 1][j + 1]+\n                image[i][j - 1] + image[i][j] + image[i][j + 1]+\n                image[i + 1][j - 1] + image[i + 1][j] + image[i + 1][j + 1];\n            sumW.push(Math.floor(c / 9));\n        }\n        sumH.push(sumW);\n    }\n    \n    return sumH;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/buildPalindrome.js",
    "content": "function reverse(s) {\n    let out = \"\";\n    for(let i = s.length - 1; i >= 0; i--) out += s[i];\n    return out;\n}\n\nfunction buildPalindrome(st) {\n    if(reverse(st) === st) return st;\n    \n    let out = \"\", sg = \"\";\n    for(let ch of st) {\n        out = st+reverse(sg += ch);\n        if(reverse(out) === out) break;\n    }\n    \n    return out;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/centuryFromYear.js",
    "content": "function centuryFromYear(year) {\n    return Math.floor(1 + (year - 1) / 100);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/checkPalindrome.js",
    "content": "function checkPalindrome(string) {\n    let str = \"\"\n    for(let i = string.length; i >= 0; i--) str += string.charAt(i);\n    return str === string;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/chessBoardCellColo.js",
    "content": "function chessBoardCellColor(cell1, cell2) {\n    let x1 = cell1.charCodeAt(0) - 65, y1 = parseInt(cell1.charAt(1));\n    let x2 = cell2.charCodeAt(0) - 65, y2 = parseInt(cell2.charAt(1));\n    return (x1 + x2) % 2 == (y1 + y2) % 2;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/chessKnight.js",
    "content": "function isSafe(x, y) {\n    return x >= 0 && x < 8 && y >= 0 && y < 8;\n}\n\nfunction chessKnight(cell) {\n    let x = cell.charCodeAt(0) - 97,\n        y = parseInt(cell[1]) - 1, out = 0;\n    \n    if(isSafe(x + 2, y + 1)) out++;\n    if(isSafe(x + 2, y - 1)) out++;\n    if(isSafe(x - 2, y + 1)) out++;\n    if(isSafe(x - 2, y - 1)) out++;\n    if(isSafe(x + 1, y + 2)) out++;\n    if(isSafe(x - 1, y + 2)) out++;\n    if(isSafe(x + 1, y - 2)) out++;\n    if(isSafe(x - 1, y - 2)) out++;\n    \n    return out;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/circleOfNumbers.js",
    "content": "function circleOfNumbers(n, firstNumber) {\n    return (n / 2 + firstNumber) % n;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/commonCharacterCount.js",
    "content": "function commonCharacterCount(s1, s2) {\n    let common = [], o = 0;\n    for(let i = 0x61; i < 0x7b; i++) {\n        let s = String.fromCharCode(i);\n        if(s1.includes(s) && s2.includes(s)) common.push(s);\n    }\n    \n    for(let e of common) {\n        let p = 0, q = 0;\n        for(let v of s1) if(v == e) p++;\n        for(let v of s2) if(v == e) q++;\n        o += Math.min(p, q);\n    }\n    \n    return o;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/deleteDigit.js",
    "content": "function deleteDigit(n) {\n    let max = 0, idx = [], s = (n+\"\");\n    \n    for(let i = 0; i < s.length; i++) idx.push(i);\n    for(let i = 0; i < s.length; i++) {\n        let v = parseInt(idx.filter(j => j != i).map(j => s[j]).join(\"\"));\n        if(v > max) max = v;\n    }\n    \n    return max;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/depositProfit.js",
    "content": "function depositProfit(deposit, rate, threshold) {\n    for(let y = 1; ; y++) {\n        if((deposit += rate / 100 * deposit) >= threshold) return y;\n    }\n}"
  },
  {
    "path": "Arcade/Intro/javascript/differentSquares.js",
    "content": "function differentSquares(matrix) {\n    let set = [];\n    \n    for(let x = 0; x < matrix.length - 1; x++) {\n        for(let y = 0; y < matrix[0].length - 1; y++) {\n            let aux = \"\";\n            for(let i = x; i < x + 2; i++) {\n                for(let j = y; j < y + 2; j++) aux += matrix[i][j];\n            }\n            if(!set.includes(aux)) set.push(aux);\n        }\n    }\n    \n    return set.length\n}"
  },
  {
    "path": "Arcade/Intro/javascript/differentSymbolsNaive.js",
    "content": "function differentSymbolsNaive(s) {\n    let set = [];\n    for(let c of s) if(!set.includes(c)) set.push(c);\n    return set.length;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/digitDegree.js",
    "content": "function digitDegree(n) {\n    let counter = 0;\n    \n    for(let sum = 0; (n+\"\").length > 1; counter++, sum = 0) {\n        for(let e of (n+\"\")) sum += parseInt(e);\n        n = sum;\n    }\n    \n    return counter;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/digitsProduct.js",
    "content": "function digitsProduct(product) {\n    if(product == 0) return 10;\n    if(product < 10) return product;\n\n    let s = \"\";\n    for(let d = 9; d > 1; d--) for(; product % d == 0; product /= d) s = d+s;\n    return product == 1 ? parseInt(s) : -1;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/electionsWinners.js",
    "content": "function electionsWinners(votes, k) {\n    let winners = 0;\n    for(let i = 0; i < votes.length; i++) {\n        let win = true;\n        for(let j = 0; j < votes.length; j++) {\n            if(j != i && votes[i] + k <= votes[j]) {\n                win = false;\n                break;\n            }\n        }\n        if(win) winners++;\n    }\n    return winners;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/evenDigitsOnly.js",
    "content": "function evenDigitsOnly(n) {\n    let nums = [];\n    for(let o of n+\"\") nums.push(o);\n    return nums.every(v => v % 2 == 0);    \n}"
  },
  {
    "path": "Arcade/Intro/javascript/extractEachKth.js",
    "content": "function extractEachKth(inputArray, k) {\n    let indexes = [];\n    for(let i = 0; i < inputArray.length; i++) indexes.push(i);\n    return indexes.filter(i => (i + 1) % k != 0).map(i => inputArray[i]);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/fileNaming.js",
    "content": "function fileNaming(names) {\n    let set = [];\n    for(let i in names) {\n        let aux = names[i];\n        for(let k = 1; set.includes(aux); k++) aux = names[i]+\"(\"+k+\")\";\n        set.push(aux);\n    }\n    return set;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/findEmailDomain.js",
    "content": "function findEmailDomain(address) {\n    let pieces = address.split(\"@\");\n    return pieces[pieces.length - 1];\n}"
  },
  {
    "path": "Arcade/Intro/javascript/firstDigit.js",
    "content": "function firstDigit(inputString) {\n    let out = '';\n    for(let e of inputString) {\n        if(/\\d/.test(e)) {\n            out = e;\n            break;\n        }\n    }\n    return out;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/isBeautifulString.js",
    "content": "function isBeautifulString(inputString) {\n    let abc = []\n    for(let i = 0; i < 26; i++) abc.push(0);\n    for(let c of inputString) abc[c.codePointAt(0) - 97]++;\n    for(let i = 0; i < 25; i++) if(abc[i + 1] > abc[i]) return false;\n    return true;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/isDigit.js",
    "content": "function isDigit(symbol) {\n    return /\\d/.test(symbol)\n}"
  },
  {
    "path": "Arcade/Intro/javascript/isIPv4Address.js",
    "content": "function isIPv4Address(inputString) {\n    let split = inputString.split(\".\");\n    \n    if(split.length != 4) return false;\n    \n    for(let o of split) {\n        let e = o.match(\"\\d*[a-z]+\\d*\");\n        if(e != null) if(e[0].length > 0) return false;\n        \n        if(o.length == 0) return false;\n        \n        if(o.length > 1 && (o.charAt(0) == '0' || parseInt(o) > 255))\n            return false;\n    }\n    return true;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/isLucky.js",
    "content": "function isLucky(n) {\n    let str = n+\"\", h1 = [], h2 = [];\n    for(let o of str.substr(0, str.length / 2)) h1.push(parseInt(o));\n    for(let o of str.substr(str.length / 2, str.length)) h2.push(parseInt(o));\n    return h1.reduce( (t, v) => t += v) == h2.reduce( (t, v) => t += v);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/isMAC48Address.js",
    "content": "function isMAC48Address(inputString) {\n    let match = /[0-9A-F]{2}(-[0-9A-F]{2}){5}/.exec(inputString)\n    return match != null ? match[0] === inputString : false\n}"
  },
  {
    "path": "Arcade/Intro/javascript/knapsackLight.js",
    "content": "function knapsackLight(value1, weight1, value2, weight2, maxW) {\n    if(maxW >= weight1 + weight2) return (value1 + value2);\n    else if(value2 > value1 && maxW >= weight2) return value2;\n    else if(value1 > value2 && maxW >= weight1) return value1;\n    else if(maxW >= weight1) return value1;\n    else if(maxW >= weight2) return value2;\n\treturn 0;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/lineEncoding.js",
    "content": "function lineEncoding(s) {\n    let subs = [], prev = s[0], aux = \"\";\n    \n    for(let i = 0; i < s.length; i++) {\n        if(s[i] != prev) {\n            subs.push(aux);\n            aux = prev = s[i];\n            continue;\n        }\n        aux += prev = s[i];\n    }\n    subs.push(aux);\n    \n    return subs.map(v => \"\"+(v.length > 1 ? v.length : \"\")+v.charAt(0)).join(\"\");\n}"
  },
  {
    "path": "Arcade/Intro/javascript/longestDigitsPrefix.js",
    "content": "function longestDigitsPrefix(inputString) {\n    let output = \"\";\n    \n    for(let c of inputString) {\n        if(/\\d/.test(c)) output += c;\n        else break;\n    }\n    \n    return output;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/longestWord.js",
    "content": "function longestWord(text) {\n    return text.replace(/[^a-zA-Z]/g, \" \")\n    .split(\" \").reduce((v, c) => c = v.length > c.length ? v : c);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/makeArrayConsecutive2.js",
    "content": "function makeArrayConsecutive2(statues) {\n    let o = 0;\n    statues.sort((a, b) => b - a);    \n    for(let i = 0; i < statues.length - 1; i++) {\n        o += statues[i] - statues[i + 1] - 1;\n    }\n    return o;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/matrixElementsSum.js",
    "content": "function matrixElementsSum(matrix) {\n    let sum = 0;\n    for(let i = 0; i < matrix[0].length; i++) {\n        for(let j = 0; j < matrix.length; j++) {\n            if(matrix[j][i] == 0) break;\n            sum += matrix[j][i];\n        }\n    }\n    return sum;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/messageFromBinaryCode.js",
    "content": "function messageFromBinaryCode(code) {\n    return code.match(/.{8}/g)\n    .map(e => String.fromCharCode(parseInt(e, 2))).join(\"\");\n}"
  },
  {
    "path": "Arcade/Intro/javascript/minesweeper.js",
    "content": "function minesweeper(matrix) {\n    let w = matrix[0].length, h = matrix.length;\n    let board = [];\n    \n    for(let i = 0; i < h; i++) {\n        let row = new Array(w);\n        row.fill(0);\n        board.push(row);\n    }\n    \n    for(let i = 0; i < h; i++) {\n        for(let j = 0; j < w; j++) {\n            if(matrix[i][j]) {\n                if(i + 1 < h) board[i + 1][j]++;\n                if(i + 1 < h && j - 1 >= 0) board[i + 1][j - 1]++;\n                if(j - 1 >= 0) board[i][j - 1]++;\n                if(i - 1 >= 0 && j + 1 < w) board[i - 1][j + 1]++;\n                if(i - 1 >= 0) board[i - 1][j]++;\n                if(i - 1 >= 0 && j - 1 >= 0) board[i - 1][j - 1]++;\n                if(j + 1 < w) board[i][j + 1]++;\n                if(i + 1 < h && j + 1 < w) board[i + 1][j + 1]++;\n            }\n        }\n    }\n    \n    return board;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/palindromeRearranging.js",
    "content": "function palindromeRearranging(inputString) {\n    let abc = [];\n    \n    for(let i = 0; i < 26; i++) abc.push(0);\n    \n    for(let i = 0; i < inputString.length; i++) {\n        abc[inputString.charCodeAt(i) - 97]++;\n    }\t\n    \n    return inputString.length % 2 ==\n    abc.map(n => n % 2 == 1 ? 1 : 0).reduce((t, v) => t + v);\n}"
  },
  {
    "path": "Arcade/Intro/javascript/reverseInParentheses.js",
    "content": "function reverseString(str) {\n    let o = \"\";\n    for(let i = str.length - 1; i >= 0; i--) o += str.charAt(i);\n    return o;\n}\n\nfunction reverseInParentheses(inputString) {\n    let reg = /\\(\\w*\\)/;\n    if(!reg.test(inputString)) return inputString;\n    let str = reg.exec(inputString)[0],\n        revStr = reverseString(str.substr(1, str.length - 2));\n    return reverseInParentheses(inputString.replace(str, revStr));\n}"
  },
  {
    "path": "Arcade/Intro/javascript/shapeArea.js",
    "content": "function shapeArea(n) {\n    let area = 1;\n    for(let i = n; i > 1; i--) area += (i - 1) * 4;\n    return area;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/sortByHeight.js",
    "content": "function sortByHeight(a) {\n    for(let i = 0; i < a.length; i++) {\n        for(let j = i + 1; j < a.length; j++) {\n            if(a[i] != -1 && a[j] != -1) {\n                if(a[i] > a[j]) {\n                    let tmp = a[i];\n                    a[i] = a[j];\n                    a[j] = tmp;\n                }\n            }\n        }\n    }\n    \n    return a;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/spiralNumbers.js",
    "content": "function spiralNumbers(n) {\n    let spiral = [];\n    let left = 0, right = n - 1, top = 0, down = n - 1;\n    \n    for(let i = 0; i < n; i++) {\n        let aux = [];\n        for(let j = 0; j < n; j++) aux.push(0);\n        spiral.push(aux);\n    }\n    \n    for(let adder = 1; adder <= n * n; ) {\n        for(let x = left; x <= right; x++) spiral[top][x] = adder++;\n        top++;\n        \n        for(let y = top; y <= down; y++) spiral[y][right] = adder++;\n        right--;\n        \n        for(let x = right; x >= left; x--) spiral[down][x] = adder++;\n        down--;\n        \n        for(let y = down; y >= top; y--) spiral[y][left] = adder++;\n        left++;\n    }\n    \n    return spiral;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/sudoku.js",
    "content": "function sudoku(grid) {\n    let n = grid.length, sqrt = Math.sqrt(n);\n    let row = new Array(9), col = new Array(9), box = new Array(9);\n\n    for(let i = 0; i < n; i++) {\n        \n        for(let j = 0; j < n; j++) {\n            row[grid[i][j] - 1]++;\n            col[grid[j][i] - 1]++;   \n        }\n        \n        let sq = i - i % sqrt;\n        for(let y = sq; y < sq + sqrt; y++) {\n            for(let x = sq; x < sq + sqrt; x++) box[grid[y][x] - 1]++;\n        }\n        \n        for(let j = 0; j < n; j++)\n            if(row[j] == 0 || col[j] == 0 || box[j] == 0) return false;\n        \n        box.fill(0);\n        row.fill(0);\n        col.fill(0);\n    }\n\n    return true;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/sumUpNumbers.js",
    "content": "function sumUpNumbers(inputString) {\n    let sum = 0, aux = \"\";\n\n    for(let i in inputString) {\n        if(/\\D/.test(inputString[i])) {\n            if(!isNaN(parseInt(aux))) sum += parseInt(aux);\n            aux = \"\";\n            i -= 1;\n            continue;\n        }\n        aux += inputString[i];\n    }\n    \n    if(!isNaN(parseInt(aux))) sum += parseInt(aux);\n    \n    return sum;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/validTime.js",
    "content": "function validTime(time) {\n    return parseInt(time[0]+time[1]) < 24 && parseInt(time[3]+time[4]) < 60;\n}"
  },
  {
    "path": "Arcade/Intro/javascript/variableName.js",
    "content": "function variableName(name) {\n    let test = /^[a-zA-Z_]\\w*/.exec(name);\n    return test != null && test[0] === name;\n}"
  },
  {
    "path": "Arcade/TheCore/C++/differentRightmostBit.cpp",
    "content": "int differentRightmostBit(int n, int m) {\n  return (n ^= m) & -n;\n}"
  },
  {
    "path": "Arcade/TheCore/C++/equalPairOfBits.cpp",
    "content": "int equalPairOfBits(int n, int m) {\n  return ~(n ^ m) & ((n ^ m) + 1);\n}"
  },
  {
    "path": "Arcade/TheCore/C++/killKthBit.cpp",
    "content": "#include <bitset>\n\nusing std::bitset;\n\nint killKthBit(int n, int k) {\n  return bitset<32>(n).set(k % 32 - 1, false).to_ullong();\n}"
  },
  {
    "path": "Arcade/TheCore/C++/secondRightmostZeroBit.cpp",
    "content": "int secondRightmostZeroBit(int n) {\n  return ~(n | ( n + 1)) & ((n | (n + 1)) + 1);\n}"
  },
  {
    "path": "Arcade/TheCore/C++/swapAdjacentBits.cpp",
    "content": "int swapAdjacentBits(int n) {\n  return 0xAAAAAAAA & n << 1 | 0x55555555 & n >> 1;\n}"
  },
  {
    "path": "Arcade/TheCore/Java/AddTwoDigits.java",
    "content": "final class AddTwoDigits {\n\n\tint addTwoDigits(int n) {\n\t    return (n+\"\").chars().map(e -> Integer.parseInt((char)e+\"\")).sum();\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/AdditionWithoutCarrying.java",
    "content": "final class AdditionWithoutCarrying {\n\n    int additionWithoutCarrying(int param1, int param2) {\n        String p1 = param1 + \"\";\n        String p2 = param2 + \"\";\n        final int len = Math.max(p1.length(), p2.length());\n        String result = \"\";\n        \n        p1 = \"0\".repeat(len - p1.length()) + p1;\n        p2 = \"0\".repeat(len - p2.length()) + p2;\n        \n        for (int i = len - 1; i >= 0; i--) {\n            String aux = (\n                Integer.parseInt(p1.charAt(i)+\"\") +\n                Integer.parseInt(p2.charAt(i)+\"\")\n            )+\"\";\n            result = aux.charAt(aux.length() - 1) + result;\n        } \n        \n        return Integer.parseInt(result);\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/AppleBoxes.java",
    "content": "final class AppleBoxes {\n    \n    int appleBoxes(int k) {\n        int yellowApples = 0, redApples = 0;\n        \n        for (int n = 0; n <= k; n++) {\n            if (n % 2 == 0) redApples += n * n;\n            else yellowApples += n * n;\n        }\n        \n        return redApples - yellowApples;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/ArithmeticExpression.java",
    "content": "final class ArithmeticExpression {\n\n\tboolean arithmeticExpression(int a, int b, int c) {\n\t    return a + b == c || a - b == c || a * b == c || a / (b * 1.0) == c;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/ArrayPacking.java",
    "content": "final class ArrayPacking {\n\t\n\tint arrayPacking(int[] a) {\n\t    String bits = \"\";\n\t    \n\t    for(int i = a.length - 1; i >= 0; i--) {\n\t        String _bin = Integer.toString(a[i], 2);\n\t        bits += \"0\".repeat(8 - _bin.length()) + _bin;\n\t    }\n\t        \n\t    return Integer.parseInt(bits, 2);\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/ArrayReplace.java",
    "content": "import java.util.stream.IntStream;\n\nfinal class ArrayReplace {\n\t\n\tint[] arrayReplace(int[] inputArray, int elemToReplace, int substitutionElem) {\n\t    return IntStream.of(inputArray)\n\t        .map(i -> i == elemToReplace ? substitutionElem : i)\n\t        .toArray();\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/Candies.java",
    "content": "final class Candies {\n\n\tint candies(int n, int m) {\n\t    return m / n * n;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/Candles.java",
    "content": "final class Candles {\n    \n    int candles(int candlesNumber, int makeNew) {\n        int leftovers = 0, totalCandles = 0;\n        \n        while (candlesNumber >= 1) {\n            candlesNumber--;\n            leftovers++;\n            totalCandles++;\n            \n            if (leftovers == makeNew) {\n                candlesNumber++;\n                leftovers = 0;\n            }\n        }\n        \n        return totalCandles;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/CircleOfNumbers.java",
    "content": "final class CircleOfNumbers {\n\n\tint circleOfNumbers(int n, int firstNumber) {\n\t    return (firstNumber + n / 2) % n;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/ComfortableNumbers.java",
    "content": "import java.util.function.ToIntFunction;\n\nfinal class ComfortableNumbers {\n    \n    int comfortableNumbers(int l, int r) {\n        final ToIntFunction<String> s = n ->\n            (n+\"\").chars().map(i -> Integer.parseInt((((char) i)+\"\"))).sum();\n        \n        int pairs = 0;\n\n        for (int i = l; i < r; i++)\n            for (int j = i + 1; j <= r; j++)\n                if (i >= j - s.applyAsInt(j+\"\")\n                    && i <= j + s.applyAsInt(j+\"\")\n                    && j >= i - s.applyAsInt(i+\"\")\n                    && j <= i + s.applyAsInt(i+\"\")) pairs++;\n        \n        return pairs;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/ConcatenateArrays.java",
    "content": "final class ConcatenateArrays {\n\t\n\tint[] concatenateArrays(int[] a, int[] b) {\n\t    return IntStream.concat(IntStream.of(a), IntStream.of(b)).toArray();\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/CountBlackCells.java",
    "content": "final class CountBlackCells {\n\t\n\tint gcd(int a, int b) {\n\t    if (a == 0) return b;\n\t    if (b == 0) return a;\n\t    \n\t    return a > b ? gcd(a % b, b) : gcd(a, b % a);\n\t}\n\n\tint countBlackCells(int n, int m) {\n\t    \n\t    if (n == m) return n + 2 * (n - 1);\n\t    if (n == 1 || m == 1) return n * m;\n\n\t    return n + m - gcd(n, m) + (gcd(n, m) - 1) * 2;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/CountSumOfTwoRepresentations2.java",
    "content": "final class CountSumOfTwoRepresentations2 {\n\t\n\tint countSumOfTwoRepresentations2(int n, int l, int r) {\n\t    if (2 * r < n || 2 * l > n) return 0;\n\t    double min = Math.max(l, n - r);\n\t    double max = Math.min(r, n - l);\n\t    return (int)(Math.floor((max + min) / 2) - min) + 1;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/CreateArray.java",
    "content": "final class CreateArray {\n\n    int[] createArray(int size) {\n        return IntStream.range(0, size).map(i -> 1).toArray();\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/ExtraNumber.java",
    "content": "final class ExtraNumber {\n\t\n\tint extraNumber(int a, int b, int c) {\n\t    return a == b ? c : a == c ? b : a;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/FirstReverseTry.java",
    "content": "final class FirstReverseTry {\n\t\n\tint[] firstReverseTry(int[] arr) {\n\t    if (arr.length > 0) {\n\t        int tmp = arr[0];\n\t        arr[0] = arr[arr.length - 1];\n\t        arr[arr.length - 1] = tmp;\n\t    }\n\t    \n\t    return arr;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/IncreaseNumberRoundness.java",
    "content": "final class IncreaseNumberRoundness {\n\n    boolean increaseNumberRoundness(int n) {\n        return (n+\"\").matches(\".*0[1-9].*\");\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/IsInfiniteProcess.java",
    "content": "final class IsInfiniteProcess {\n\t\n\tboolean isInfiniteProcess(int a, int b) {\n\t    return !((a < b && (int) Math.abs(a - b) % 2 == 0) || a == b);\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/IsPower.java",
    "content": "final class IsPower {\n    \n    boolean isPower(int n) {\n        if (n == 1) return true;\n        \n        for (int p = 2; p < n; p++) {\n            for (int q = 2; q < n; q++) {\n                if (Math.pow(p, q) > n) break;\n                if (Math.pow(p, q) == n) return true;\n            }\n        }\n        \n        return false;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/IsSmooth.java",
    "content": "final class IsSmooth {\n\t\n\tboolean isSmooth(int[] arr) {\n\t    int l = arr.length;\n\t    \n\t    if (l == 1) return true;\n\t    \n\t    int middle = switch (l % 2) {\n\t        case 0 -> arr[l / 2] + arr[l / 2 - 1];\n\t        default -> arr[l / 2];\n\t    };\n\t    \n\t    return arr[0] == middle && arr[l - 1] == middle;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/IsSumOfConsecutive2.java",
    "content": "final class IsSumOfConsecutive2 {\n\t\n\tint isSumOfConsecutive2(int n) {\n\t    int ways = 0;\n\t    \n\t    for (int i = 1; i <= n; i++) {\n\t        int sum = i;\n\t        \n\t        for (int j = i + 1; j < n; j++) {\n\t            if ((sum += j) > n) break;\n\t            else if (sum == n) ways++;\n\t        }\n\t    }\n\t    \n\t    return ways;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/KnapsackLight.java",
    "content": "final class KnapsackLight {\n\n\tint knapsackLight(int value1, int weight1, int value2, int weight2, int maxW) {\n\t    if(maxW >= weight1 + weight2) return (value1 + value2);\n\t    else if(value2 > value1 && maxW >= weight2) return value2;\n\t    else if(value1 > value2 && maxW >= weight1) return value1;\n\t    else if(maxW >= weight1) return value1;\n\t    else if(maxW >= weight2) return value2;\n\t\treturn 0;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/LargestNumber.java",
    "content": "final class LargestNumber {\n\n\tint largestNumber(int n) {\n\t    return Integer.parseInt(\"9\".repeat(n));\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/LateRide.java",
    "content": "final class LateRide {\n\n\tint lateRide(int n) {\n\t    return ((n / 60)+\"\"+(n % 60)).chars()\n\t    .map(e -> Integer.parseInt((char)e+\"\")).sum();\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/LeastFactorial.java",
    "content": "final class LeastFactorial {\n\t\n\tint fact(int n) {\n\t    return n == 1 ? n : n * fact(n - 1);\n\t}\n\n\tint leastFactorial(int n) {\n\t    for (int i = 1; true; i++) {\n\t        int f = fact(i);\n\t        if (f >= n) return f;\n\t    }\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/LineUp.java",
    "content": "final class LineUp {\n    \n    int lineUp(String commands) {\n        int count = 0;\n        int smartStudent = 0;\n        int dumbStudent = 0;\n        \n        for (char c : commands.toCharArray()) {\n            switch (c) {\n                case 'L', 'R' -> {\n                    smartStudent++;\n                    dumbStudent--;    \n                }\n                case 'A' -> {\n                    smartStudent = smartStudent + 2;\n                    dumbStudent = dumbStudent + 2;\n                }\n            }\n                \n            smartStudent = smartStudent < 0 ? smartStudent + 4 : smartStudent % 4;\n            dumbStudent = dumbStudent < 0 ? dumbStudent + 4 : dumbStudent % 4;\n            if (smartStudent == dumbStudent) count++;\n        }\n        \n        return count;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/MagicalWell.java",
    "content": "final class MagicalWell {\n\t\n\tint magicalWell(int a, int b, int n) {\n\t    int dolar = 0;\n\t    for (int i = 0; i < n; i++) dolar += a++ * b++;\n\t    return dolar;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/MakeArrayConsecutive2.java",
    "content": "final class MakeArrayConsecutive2 {\n    \n    int makeArrayConsecutive2(int[] statues) {\n        Arrays.sort(statues);\n        \n        final int max = statues[statues.length - 1];\n        final int min = statues[0];\n        int additionalStatues = 0;\n        \n        for (int statue = min; statue <= max; statue++)\n            if (Arrays.binarySearch(statues, statue) < 0)\n                additionalStatues++;\n        \n        return additionalStatues;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/MaxMultiple.java",
    "content": "final class MaxMultiple {\n\t\n\t// recursive\n\tint maxMultiple(int divisor, int bound) {\n\t    if(bound % divisor == 0) return bound;\n\t    return maxMultiple(divisor, bound -= 1);\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/MetroCard.java",
    "content": "final class MetroCard {\n\t\n\tint[] metroCard(int lastNumberOfDays) {\n\t    return lastNumberOfDays == 31 ? new int[]{28, 30, 31} : new int[]{31}; \n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/MirrorBits.java",
    "content": "final class MirrorBits {\n\t\n\tint mirrorBits(int a) {\n\t    return Integer.parseInt(\n\t        new StringBuilder(Integer.toString(a, 2)).reverse()+\"\", 2\n\t    );\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/PagesNumberingWithInk.java",
    "content": "final class PagesNumberingWithInk {\n    \n    int pagesNumberingWithInk(int current, int numberOfDigits) {\n        while(numberOfDigits >= (current+\"\").length())\n            numberOfDigits -= ((current++)+\"\").length();\n            \n        return current - 1;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/PhoneCall.java",
    "content": "final class PhoneCall {\n    \n    int phoneCall(int min1, int min2_10, int min11, int s) {\n        int min = 0, q = 9;\n        \n        if(s >= min1) {\n            s -= min1;\n            min++;\n        }\n        \n        for(int i = 0; i < 9; i++) {\n            if(s >= min2_10) {\n                s -= min2_10;\n                min++;\n                q--;\n            }\n        }\n        \n        if(q == 0) {\n            while(s >= min11) {\n                s -= min11;\n                min++;\n            }   \n        }\n        \n        return min;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/RangeBitCount.java",
    "content": "import java.util.stream.IntStream;\n\nfinal class RangeBitCount {\n\t\n\tint rangeBitCount(int a, int b) {\n\t    return IntStream.range(a, b + 1)\n\t        .reduce(\n\t            0,\n\t            (t, i) -> t + Integer.toString(i, 2)\n\t            \t.replaceAll(\"0\", \"\").length()\n\t        );\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/ReachNextLevel.java",
    "content": "final class ReachNextLevel {\n\n\tboolean reachNextLevel(int experience, int threshold, int reward) {\n    \treturn reward + experience >= threshold;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/RectangleRotation.java",
    "content": "final class RectangleRotation {\n\n    int solution(int a, int b) {\n        double aBisect = a / Math.sqrt(2) / 2;\n        double bBisect = b / Math.sqrt(2) / 2;\n        \n        int[] rect1 = new int[] {\n            ((int) Math.floor(aBisect)) * 2 + 1,\n            ((int) Math.floor(bBisect)) * 2 + 1\n        }; \n        \n        int[] rect2 = new int[] {\n            aBisect - Math.floor(aBisect) < 0.5 ? rect1[0] - 1 : rect1[0] + 1,\n            bBisect - Math.floor(bBisect) < 0.5 ? rect1[1] - 1 : rect1[1] + 1\n        };\n        \n        return rect1[0] * rect1[1] + rect2[0] * rect2[1];\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/RemoveArrayPart.java",
    "content": "final class RemoveArrayPart {\n    \n    int[] removeArrayPart(int[] inputArray, int l, int r) {\n        return IntStream.range(0, inputArray.length)\n            .filter(i -> i < l || i > r)\n            .map(i -> inputArray[i]).toArray();\n    }   \n}"
  },
  {
    "path": "Arcade/TheCore/Java/ReplaceMiddle.java",
    "content": "final class ReplaceMiddle {\n\n    int[] replaceMiddle(int[] arr) {\n        if (arr.length % 2 > 0) return arr;\n        \n        int sum = arr[arr.length / 2 - 1] + arr[arr.length / 2];\n        \n        arr[arr.length / 2 - 1] = sum;\n        \n        return IntStream.range(0, arr.length)\n            .filter(i -> i != arr.length / 2)\n            .map(i -> arr[i]).toArray();\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/Rounders.java",
    "content": "final class Rounders {\n\t\n\tint rounders(int n) {\n\t    int[] digits = (n+\"\").chars()\n\t        .map(c -> Integer.parseInt(((char) c)+\"\")).toArray();\n\t    \n\t    for (int i = digits.length - 1; i >= 1; i--) {\n\t        if (digits[i] >= 5) digits[i - 1]++;\n\t        digits[i] = 0;\n\t    }\n\t    \n\t    return Integer.parseInt(Arrays.toString(digits).replaceAll(\"\\\\D\", \"\"));\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/SeatsInTheater.java",
    "content": "final class SeatsInTheater {\n\n\tint seatsInTheater(int nCols, int nRows, int col, int row) {\n\t    return (nCols - col + 1) * (nRows - row);\n\t}\n}\n"
  },
  {
    "path": "Arcade/TheCore/Java/SquareDigitsSequence.java",
    "content": "import java.util.Set;\nimport java.util.HashSet;\nimport java.util.stream.Stream;\n\nfinal class SquareDigitsSequence {\n\t\n\tint squareDigitsSequence(int a0) {\n\t    final Set<Integer> set = new HashSet<>();\n\t    \n\t    for (int elem = a0; set.add(elem); ) {\n\t        final int sum = Stream.of((elem+\"\").split(\"\"))\n\t            .mapToInt(Integer::parseInt)\n\t            .map(n -> n * n).sum();\n\t            \n\t        elem = sum;\n\t    }\n\t    \n\t    return set.size() + 1;\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/TennisSet.java",
    "content": "final class TennisSet {\n\n\tboolean tennisSet(int score1, int score2) {\n\t    return (score1 > score2) ?\n\t        (score1 == 7 && (score2 == 5 || score2 == 6)) ||\n\t        (score1 == 6 && (score2 < 5 && score2 >= 0)) :\n\t        (score2 == 7 && (score1 == 5 || score1 == 6)) ||\n\t        (score2 == 6 && (score1 < 5 && score1 >= 0));\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Java/WeakNumbers.java",
    "content": "import java.util.stream.IntStream;\nimport java.util.function.IntUnaryOperator;\n\nfinal class WeakNumbers {\n    \n    int[] weakNumbers(int n) {\n        final IntUnaryOperator divisors = x ->\n            (int) IntStream.rangeClosed(1, x).filter(i -> x % i == 0).count();\n        \n        final int[] weaknessSet =\n            IntStream.rangeClosed(1, n).map(x -> {\n                final int d = divisors.applyAsInt(x);\n                \n                return (int) IntStream.rangeClosed(1, x - 1)\n                    .filter(i -> divisors.applyAsInt(i) > d).count();\n            }).toArray();\n            \n        final int weakestNumber = IntStream.of(weaknessSet).max().getAsInt();\n        \n        return new int[] {\n            weakestNumber,\n            (int) IntStream.of(weaknessSet)\n                .filter(it -> it == weakestNumber).count()\n        };\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Java/WillYou.java",
    "content": "final class WillYou {\n\t\n\tboolean willYou(boolean young, boolean beautiful, boolean loved) {\n\t    return (young && beautiful && !loved) ||\n\t        (loved && (!young || !beautiful));\n\t}\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/addTwoDigits.js",
    "content": "function addTwoDigits(n) {\n    let out = 0;\n    \n    for(let d of (n+\"\")) out += parseInt(d);\n    \n    return out;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/additionWithoutCarrying.js",
    "content": "function additionWithoutCarrying(param1, param2) {\n    let p1 = param1+\"\";\n    let p2 = param2+\"\";\n    let result = \"\";\n    const len = Math.max(p1.length, p2.length)\n    \n    p1 = \"0\".repeat(len - p1.length) + p1;\n    p2 = \"0\".repeat(len - p2.length) + p2;\n    \n    for (let i = len - 1; i >= 0; i--) {\n        const aux = (parseInt(p1[i]) + parseInt(p2[i]))+\"\";\n        result = aux[aux.length - 1] + result;\n    }\n\n    return parseInt(result);\n}\n"
  },
  {
    "path": "Arcade/TheCore/Javascript/appleBoxes.js",
    "content": "function appleBoxes(k) {\n    let yellowApples = 0;\n    let redApples = 0;\n    \n    for (let n = 1; n <= k; n++) {\n        if (n % 2 == 0) redApples += n * n;\n        else yellowApples += n * n;\n    }\n    \n    return redApples - yellowApples;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/arithmeticExpression.js",
    "content": "function arithmeticExpression(a, b, c) {\n    return a + b == c || a - b == c || a * b == c || a / b == c;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/arrayPacking.js",
    "content": "function arrayPacking(a) {\n    return parseInt(\n        a.map(v => v.toString(2))\n            .reverse()\n            .map(e => \"0\".repeat(8 - e.length) + e)\n            .join(\"\"), 2\n    );\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/arrayReplace.js",
    "content": "function arrayReplace(inputArray, elemToReplace, substitutionElem) {\n    return inputArray.map(i => i == elemToReplace ? substitutionElem : i)\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/candies.js",
    "content": "function candies(n, m) {\n    return Math.floor(m / n) * n;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/candles.js",
    "content": "function candles(candlesNumber, makeNew) {\n    let leftovers = 0;\n    let totalCandles = 0;\n    \n    while (candlesNumber >= 1) {\n        candlesNumber--;\n        leftovers++\n        totalCandles++;\n        \n        if (leftovers == makeNew) {\n            candlesNumber++;\n            leftovers = 0;\n        }\n    }\n    \n    return totalCandles;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/circleOfNumbers.js",
    "content": "function circleOfNumbers(n, firstNumber) {\n    return (firstNumber + n / 2) % n;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/comfortableNumbers.js",
    "content": "function s(n) {\n    return [...n+\"\"].map(i => +i).reduce((t, a) => t + a)\n}\n\nfunction comfortableNumbers(l, r) {\n    let pairs = 0;\n\n    for (let i = l; i < r; i++)\n        for (let j = i + 1; j <= r; j++)\n            if (i >= j - s(j) && i <= j + s(j)\n                && j >= i - s(i) && j <= i + s(i)) pairs++;\n    \n    return pairs;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/concatenateArrays.js",
    "content": "function concatenateArrays(a, b) {\n    return [...a, ...b]\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/countBlackCells.js",
    "content": "function gcd(a, b) {\n    if (a == 0) return b\n    if (b == 0) return a\n    \n    return a > b ? gcd(a % b, b) : gcd(a, b % a)\n}\n\nfunction countBlackCells(n, m) {\n\n    if (n == m) return n + 2 * (n - 1)\n    if (n == 1 || m == 1) return n * m\n\n    return n + m - gcd(n, m) + (gcd(n, m) - 1) * 2\n}\n"
  },
  {
    "path": "Arcade/TheCore/Javascript/countSumOfTwoRepresentations2.js",
    "content": "function countSumOfTwoRepresentations2(n, l, r) {\n    if (2 * r < n || 2 * l > n) return 0;\n    let min = Math.max(l, n - r);\n    let max = Math.min(r, n - l);\n    let mid = Math.floor((max + min) / 2);\n    return mid - min + 1;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/createArray.js",
    "content": "function createArray(size) {\n    return Array(size).fill(1)\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/differentRightmostBit.js",
    "content": "function differentRightmostBit(n, m) {\n  return Math.pow(2, [...(n ^ m).toString(2)].reverse().findIndex(v => v == 1));\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/extraNumber.js",
    "content": "function extraNumber(a, b, c) {\n    return a == b ? c : a == c ? b : a;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/firstReverseTry.js",
    "content": "function firstReverseTry(arr) {\n    Array.prototype.swp = function(i, j) {\n        const tmp = this[i]\n        this[i] = this[j]\n        this[j] = tmp\n    };\n    \n    if (arr.length > 0) arr.swp(0, arr.length - 1)\n    \n    return arr\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/increaseNumberRoundness.js",
    "content": "function increaseNumberRoundness(n) {\n    // Array.prototype.swap = function(i, j) {\n    //     const tmp = this[i];\n    //     this[i] = this[j];\n    //     this[j] = tmp;\n    // }\n    \n    // const s = [...n+\"\"];\n    \n    // for (let i = 0; i < s.length; i++) {\n    //     if (s[i] === \"0\") {\n    //         for (let j = i + 1; j < s.length; j++) {\n    //             s.swap(i, j);\n    //             if (parseInt(s.join(\"\")) > n) return true;\n    //         }\n    //     }\n    // }\n    \n    // return false;\n    \n    return /0[1-9]/.test(n);\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/isInfiniteProcess.js",
    "content": "function isInfiniteProcess(a, b) {\n    return !((a < b && Math.abs(a - b) % 2 == 0) || a == b);\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/isPower.js",
    "content": "function isPower(n) {\n    if (n == 1) return true;\n    \n    for (let m = 2; m <= n; m++) {\n        \n        for (let e = 2; e <= n; e++) {\n            if (Math.pow(m, e) > n) break;\n            if (Math.pow(m, e) == n) return true;\n        }\n    }\n    \n    return false\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/isSmooth.js",
    "content": "function isSmooth(arr) {\n    const l = arr.length\n    \n    if (l == 1) return true\n    \n    let middle\n    \n    if (l % 2 == 0) middle = arr[l / 2] + arr[l / 2 - 1]\n    else middle = arr[Math.floor(l / 2)]\n    \n    return arr[0] == middle && arr[l - 1] == middle\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/isSumOfConsecutive2.js",
    "content": "function isSumOfConsecutive2(n) {\n    let ways = 0;\n    \n    for (let i = 1; i <= n; i++) {\n        let sum = i;\n        \n        for (let j = i + 1; j <= n; j++) {\n            if ((sum += j) > n) break\n            else if (sum == n) ways++\n        }\n    }\n    \n    return ways;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/knapsackLight.js",
    "content": "function knapsackLight(value1, weight1, value2, weight2, maxW) {\n    if (maxW >= weight1 + weight2) return (value1 + value2);\n    else if (value2 > value1 && maxW >= weight2) return value2;\n    else if (value1 > value2 && maxW >= weight1) return value1;\n    else if (maxW >= weight1) return value1;\n    else if (maxW >= weight2) return value2;\n    return 0;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/largestNumber.js",
    "content": "function largestNumber(n) {\n    let out = \"\";\n    \n    for(let i = 0; i < n; i++) out += \"9\";\n    \n    return parseInt(out);\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/lateRide.js",
    "content": "function lateRide(n) {\n    let sum = 0;\n    \n    for(let s of (Math.floor(n / 60)+\"\"+(n % 60))) sum += parseInt(s);\n    \n    return sum;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/leastFactorial.js",
    "content": "function fact(n) {\n\tif (n == 1) return n;\n\treturn n * fact(n - 1);\n}\n\nfunction leastFactorial(n) {\n    for (let i = 1; true; i++) {\n        let f = fact(i)\n        if (f >= n) return f;\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/lineUp.js",
    "content": "function lineUp(commands) {\n    let count = 0;\n    let smartStudent = 0;\n    let dumbStudent = 0;\n    \n    for (let c of commands) {\n        if (c === \"L\" || c === \"R\") {\n            smartStudent--;\n            dumbStudent++;   \n        }\n        else if (c === \"A\") {\n            smartStudent = smartStudent + 2;\n            dumbStudent = dumbStudent + 2;\n        }\n            \n        smartStudent = smartStudent < 0 ? smartStudent + 4 : smartStudent % 4;\n        dumbStudent = dumbStudent < 0 ? dumbStudent + 4 : dumbStudent % 4;\n        \n        if (smartStudent == dumbStudent) count++;\n    }\n    \n    return count;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/magicalWell.js",
    "content": "function magicalWell(a, b, n) {\n    let dolar = 0\n    for (let i = 0; i < n; i++) dolar += a++ * b++\n    return dolar\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/makeArrayConsecutive2.js",
    "content": "function makeArrayConsecutive2(statues) {\n    const min = Math.min.apply(null, statues)\n    const max = Math.max.apply(null, statues)\n    \n    let additionalStatues = 0\n    \n    for (let statue = min; statue <= max; statue++)\n        if (!statues.includes(statue)) additionalStatues++\n        \n    return additionalStatues\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/maxMultiple.js",
    "content": "function maxMultiple(divisor, bound) {\n    if(bound % divisor == 0) return bound;\n    return maxMultiple(divisor, bound -= 1);\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/metroCard.js",
    "content": "function metroCard(lastNumberOfDays) {    \n    return lastNumberOfDays == 31 ? [28, 30, 31] : [31]; \n}\n"
  },
  {
    "path": "Arcade/TheCore/Javascript/mirrorBits.js",
    "content": "function mirrorBits(a) {\n    return parseInt([...a.toString(2)].reverse().join(\"\"), 2)\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/pagesNumberingWithInk.js",
    "content": "function pagesNumberingWithInk(current, numberOfDigits) {\n    while (numberOfDigits >= (current+\"\").length)\n        numberOfDigits -= ((current++)+\"\").length\n        \n    return current - 1;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/phoneCall.js",
    "content": "function phoneCall(min1, min2_10, min11, s) {\n    let min = 0, q = 9;\n        \n    if(s >= min1) {\n        s -= min1;\n        min++;\n    }\n    \n    for(let i = 0; i < 9; i++) {\n        if(s >= min2_10) {\n            s -= min2_10;\n            min++;\n            q--;\n        }\n    }\n    \n    if(q == 0) {\n        while(s >= min11) {\n            s -= min11;\n            min++;\n        }   \n    }\n    \n    return min;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/rangeBitCount.js",
    "content": "function rangeBitCount(a, b) {\n    let count = 0;\n    \n    for (let i = a; i <= b; i++)\n        count += i.toString(2).replaceAll(\"0\", \"\").length\n    \n    return count;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/reachNextLevel.js",
    "content": "function reachNextLevel(experience, threshold, reward) {\n    return reward + experience >= threshold;\n}\n"
  },
  {
    "path": "Arcade/TheCore/Javascript/rectangleRotation.js",
    "content": "function solution(a, b) {\n    const aBisect = (a / Math.sqrt(2)) / 2\n    const bBisect = (b / Math.sqrt(2)) / 2\n    \n    const rect1 = [Math.floor(aBisect) * 2 + 1, Math.floor(bBisect) * 2 + 1]\n    const rect2 = [\n        aBisect - Math.floor(aBisect) < 0.5 ? rect1[0] - 1 : rect1[0] + 1,\n        bBisect - Math.floor(bBisect) < 0.5 ? rect1[1] - 1 : rect1[1] + 1\n    ]\n    \n    return rect1[0] * rect1[1] + rect2[0] * rect2[1]\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/removeArrayPart.js",
    "content": "function removeArrayPart(inputArray, l, r) {\n    return inputArray.filter((v, i) => i < l || i > r)\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/replaceMiddle.js",
    "content": "function replaceMiddle(arr) {\n    if (arr.length % 2 == 0)\n        arr.splice(\n            arr.length / 2 - 1, 2,\n            arr[arr.length / 2] + arr[arr.length / 2 - 1]\n        )\n    \n    return arr\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/rounders.js",
    "content": "function rounders(n) {\n    const digits = [...n+\"\"].map(i => parseInt(i))\n    \n    for (let i = digits.length - 1; i >= 1; i--) {\n        if (digits[i] >= 5) digits[i - 1]++;\n        digits[i] = 0;\n    }\n    \n    return parseInt(digits.join(\"\"));\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/seatsInTheater.js",
    "content": "function seatsInTheater(nCols, nRows, col, row) {\n    return (nCols - col + 1) * (nRows - row);\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/squareDigitsSequence.js",
    "content": "function squareDigitsSequence(a0) {\n    const seq = [a0]\n    \n    while (true) {\n        const sum = [...seq[0]+\"\"]\n            .map(i => Math.pow(+i, 2))\n            .reduce((total, curr) => total + curr);\n            \n        if (seq.includes(sum)) break;\n        \n        seq.unshift(sum);\n    }\n    \n    return seq.length + 1;\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/tennisSet.js",
    "content": "function tennisSet(score1, score2) {\n    return (score1 > score2) ?\n        (score1 == 7 && (score2 == 5 || score2 == 6)) ||\n        (score1 == 6 && (score2 < 5 && score2 >= 0)) :\n        (score2 == 7 && (score1 == 5 || score1 == 6)) ||\n        (score2 == 6 && (score1 < 5 && score1 >= 0))\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/weakNumbers.js",
    "content": "function divisors(n) {\n    let d = 0;\n\n    for (let i = 1; i <= n; i++)\n        if (n % i == 0) d++;\n    \n    return d;\n}\n\nfunction weakness(n) {\n    let lvl = 0;\n    const d = divisors(n);\n    \n    for (let i = 1; i < n; i++)\n        if (divisors(i) > d) lvl++;\n        \n    return lvl;\n}\n\nfunction weakNumbers(n) {\n    const weaknessSet = []\n    \n    for (let i = 1; i <= n; i++) weaknessSet.push(weakness(i))\n    \n    const weakestNumber =\n        weaknessSet.reduce((prev, acc) => prev < acc ? acc : prev);\n    \n    return [\n        weakestNumber,\n        weaknessSet.filter(i => i == weakestNumber).length\n    ]\n}"
  },
  {
    "path": "Arcade/TheCore/Javascript/willYou.js",
    "content": "function willYou(young, beautiful, loved) {\n    return (young && beautiful && !loved) ||\n        (loved && (!young || !beautiful));\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/addTwoDigits.kt",
    "content": "fun addTwoDigits(n: Int): Int {\n  return n.toString().sumBy { it.toString().toInt() }\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/additionWithoutCarrying.kt",
    "content": "fun additionWithoutCarrying(param1: Int, param2: Int): Int {\n    var p1: String = param1.toString();\n    var p2: String = param2.toString();\n    val len: Int = Math.max(p1.length, p2.length);\n    var result: String = \"\";\n    \n    p1 = \"0\".repeat(len - p1.length) + p1;\n    p2 = \"0\".repeat(len - p2.length) + p2;\n    \n    (len - 1 downTo 0).forEach {\n        result = (p1[it].toString().toInt() + p2[it].toString().toInt())\n            .toString().last().toString() + result;\n    }\n    \n    return result.toInt();\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/appleBoxes.kt",
    "content": "fun appleBoxes(k: Int): Int {\n    var redApples: Int = 0;\n    var yellowApples: Int = 0;\n    \n    (1..k).forEach {\n        if (it % 2 == 0) redApples += it * it;\n        else yellowApples += it * it;\n    }\n    \n    return redApples - yellowApples;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/arithmeticExpression.kt",
    "content": "fun arithmeticExpression(a: Int, b: Int, c: Int) =\n  a + b == c || a - b == c || a * b == c || a.toDouble() / b.toDouble() == c.toDouble()\n"
  },
  {
    "path": "Arcade/TheCore/Kotlin/arrayPacking.kt",
    "content": "fun arrayPacking(a: MutableList<Int>): Int {\n    return Integer.parseInt(\n        a.map { it.toString(2) }\n        .reversed()\n        .joinToString(\n            separator = \"\",\n            transform = { \"0\".repeat(8 - it.length) + it }\n        ), 2\n    )\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/arrayReplace.kt",
    "content": "fun arrayReplace(inputArray: MutableList<Int>, elemToReplace: Int, substitutionElem: Int): MutableList<Int> {\n  return inputArray\n    .map { if (elemToReplace == it) substitutionElem else it }.toMutableList()\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/candies.kt",
    "content": "fun candies(n: Int, m: Int) = m / n * n"
  },
  {
    "path": "Arcade/TheCore/Kotlin/candles.kt",
    "content": "fun candles(candlesNumber: Int, makeNew: Int): Int {\n    var leftovers: Int = 0;\n    var totalCandles: Int = 0;\n    var candlesToBurn: Int = candlesNumber;\n    \n    while (candlesToBurn >= 1) {\n        candlesToBurn--;\n        leftovers++;\n        totalCandles++;\n        \n        if (leftovers == makeNew) {\n            candlesToBurn++;\n            leftovers = 0;\n        }\n    }\n    \n    return totalCandles;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/circleOfNumbers.kt",
    "content": "fun circleOfNumbers(n: Int, firstNumber: Int) = (firstNumber + n / 2) % n"
  },
  {
    "path": "Arcade/TheCore/Kotlin/comfortableNumbers.kt",
    "content": "fun comfortableNumbers(l: Int, r: Int): Int {\n    fun Int.s(): Int = (\"\"+this).sumOf { (\"\"+it).toInt() };\n    \n    var pairs: Int = 0;\n    \n    (l..r).forEach { i -> \n        ((i + 1)..r).forEach { j -> \n            if (i in ((j - j.s())..(j + j.s()))\n                && j in ((i - i.s())..(i + i.s()))) pairs++;\n        }\n    };\n    \n    return pairs;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/concatenateArrays.kt",
    "content": "fun concatenateArrays(a: MutableList<Int>, b: MutableList<Int>) = a + b"
  },
  {
    "path": "Arcade/TheCore/Kotlin/countBlackCells.kt",
    "content": "fun gcd(a: Int, b: Int): Int {\n    if (a == 0) return b;\n    if (b == 0) return a;\n    \n    return if (a > b) gcd(a % b, b) else gcd(a, b % a);\n}\n\nfun countBlackCells(n: Int, m: Int): Int {\n    if (n == m) return n + 2 * (n - 1);\n    if (n == 1 || m == 1) return n * m;\n\n    return n + m - gcd(n, m) + (gcd(n, m) - 1) * 2;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/countSumOfTwoRepresentations2.kt",
    "content": "fun countSumOfTwoRepresentations2(n: Int, l: Int, r: Int): Int {\n    if (2 * r < n || 2 * l > n) return 0;\n    val min: Double = Math.max(l.toDouble(), n.toDouble() - r.toDouble());\n    val max: Double = Math.min(r.toDouble(), n.toDouble() - l.toDouble());\n    return ((Math.floor((max + min) / 2.0) - min) + 1.0).toInt();\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/createArray.kt",
    "content": "fun createArray(size: Int): MutableList<Int> =\n    MutableList(size) { 1 }"
  },
  {
    "path": "Arcade/TheCore/Kotlin/extraNumber.kt",
    "content": "fun extraNumber(a: Int, b: Int, c: Int) =\n    if (a == b) c else if (a == c) b else a;"
  },
  {
    "path": "Arcade/TheCore/Kotlin/firstReverseTry.kt",
    "content": "fun firstReverseTry(arr: MutableList<Int>): MutableList<Int> {\n    fun <T> MutableList<T>.swp(i: Int, j: Int): Unit {\n        val tmp: T = this[i];\n        this[i] = this[j];\n        this[j] = tmp;\n    };\n    \n    if (arr.isNotEmpty()) arr.swp(0, arr.size - 1)\n    \n    return arr;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/increaseNumberRoundness.kt",
    "content": "fun increaseNumberRoundness(n: Int) =\n    Regex(\"0[1-9]\").containsMatchIn(n.toString());"
  },
  {
    "path": "Arcade/TheCore/Kotlin/isInfiniteProcess.kt",
    "content": "fun isInfiniteProcess(a: Int, b: Int) =\n    !((a < b && Math.abs(a - b) % 2 == 0) || a == b);"
  },
  {
    "path": "Arcade/TheCore/Kotlin/isPower.kt",
    "content": "fun isPower(n: Int): Boolean {\n    if (n == 1) return true;\n    \n    outer@ for (i: Int in (2..n)) {\n        for(j: Int in (2..n)) {\n            val q: Int = Math.pow(i.toDouble(), j.toDouble()).toInt();\n            if (q > n) continue@outer\n            if (q == n) return true\n        }\n    }\n    \n    return false;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/isSmooth.kt",
    "content": "fun isSmooth(arr: MutableList<Int>): Boolean {\n    val l: Int = arr.size\n    \n    if (l == 1) return true\n    \n    var middle: Int = when (l % 2) {\n        0 -> arr[l / 2] + arr[l / 2 - 1]\n        else -> arr[l / 2]\n    }\n    \n    return arr[0] == middle && arr.last() == middle\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/isSumOfConsecutive2.kt",
    "content": "fun isSumOfConsecutive2(n: Int): Int {\n    var ways: Int = 0;\n    \n    outer@ for (i: Int in (1..n)) {\n        var sum: Int = i;\n        \n        for (j: Int in ((i + 1)..n)) {\n            sum += j;\n            if (sum > n) continue@outer\n            else if (sum == n) ways++;\n        }\n    }\n    \n    return ways;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/knapsackLight.kt",
    "content": "fun knapsackLight(value1: Int, weight1: Int, value2: Int, weight2: Int, maxW: Int): Int {\n    if (maxW >= weight1 + weight2) return (value1 + value2);\n    else if (value2 > value1 && maxW >= weight2) return value2;\n    else if (value1 > value2 && maxW >= weight1) return value1;\n    else if (maxW >= weight1) return value1;\n    else if (maxW >= weight2) return value2;\n    return 0;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/largestNumber.kt",
    "content": "fun largestNumber(n: Int) = (1..n).map { \"9\" }.joinToString(\"\").toInt()"
  },
  {
    "path": "Arcade/TheCore/Kotlin/lateRide.kt",
    "content": "fun lateRide(n: Int) =\n    \"${n / 60}${n % 60}\".sumBy { it.toString().toInt() }\n"
  },
  {
    "path": "Arcade/TheCore/Kotlin/leastFactorial.kt",
    "content": "fun fact(n: Int): Int = if (n == 1) n else n * fact(n - 1)\n\nfun leastFactorial(n: Int): Int {\n    var i: Int = 1\n    while(true) {\n        val f: Int = fact(i)\n        if (f >= n) return f\n        i++\n    }\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/lineUp.kt",
    "content": "fun lineUp(commands: String): Int {\n    var count: Int = 0;\n    var smartStudent: Int = 0;\n    var dumbStudent: Int = 0;\n    \n    commands.forEach {\n        when (it) {\n            'L', 'R' -> {\n                smartStudent++;\n                dumbStudent--;\n            }\n            'A' -> {\n                smartStudent = smartStudent + 2;\n                dumbStudent = dumbStudent + 2;\n            }\n        }\n        \n        smartStudent =\n            if (smartStudent < 0) smartStudent + 4\n            else smartStudent % 4;\n        dumbStudent =\n            if (dumbStudent < 0) dumbStudent + 4\n            else dumbStudent % 4;\n            \n        if (smartStudent == dumbStudent) count++;\n    }\n        \n    return count;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/magicalWell.kt",
    "content": "fun magicalWell(a: Int, b: Int, n: Int): Int =\n    if (n == 0) 0 else a * b + magicalWell(a + 1, b + 1, n - 1)"
  },
  {
    "path": "Arcade/TheCore/Kotlin/makeArrayConsecutive2.kt",
    "content": "fun makeArrayConsecutive2(statues: MutableList<Int>): Int {\n    val max: Int = statues.maxOf { it }\n    val min: Int = statues.minOf { it }\n    var additionalStatues = 0;\n    \n    (min..max).forEach({ statue ->\n        if (!(statue in statues))\n            additionalStatues++\n    });\n    \n    return additionalStatues;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/maxMultiple.kt",
    "content": "fun maxMultiple(divisor: Int, bound: Int): Int =\n    if (bound % divisor == 0) bound\n    else maxMultiple(divisor, bound - 1)\n"
  },
  {
    "path": "Arcade/TheCore/Kotlin/metroCard.kt",
    "content": "fun metroCard(lastNumberOfDays: Int) =\n    if (lastNumberOfDays == 31) mutableListOf(28, 30, 31)\n    else mutableListOf(31)"
  },
  {
    "path": "Arcade/TheCore/Kotlin/mirrorBits.kt",
    "content": "fun mirrorBits(a: Int) =\n    Integer.parseInt(a.toString(2).reversed(), 2)"
  },
  {
    "path": "Arcade/TheCore/Kotlin/pagesNumberingWithInk.kt",
    "content": "fun pagesNumberingWithInk(current: Int, numberOfDigits: Int): Int {\n    var lastPage: Int = current;\n    var ink: Int = numberOfDigits;\n    \n    while (ink >= (\"\"+lastPage).length)\n        ink -= (\"\"+lastPage++).length\n        \n    return lastPage - 1;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/phoneCall.kt",
    "content": "fun phoneCall(min1: Int, min2_10: Int, min11: Int, s: Int): Int {\n    var min: Int = 0\n    var q: Int = 9\n    var p: Int = s\n        \n    if (p >= min1) {\n        p -= min1;\n        min++;\n    }\n    \n    (1..9).forEach {\n        if (p >= min2_10) {\n            p -= min2_10;\n            min++;\n            q--;\n        }\n    }\n    \n    if(q == 0) {\n        while(p >= min11) {\n            p -= min11;\n            min++;\n        }   \n    }\n    \n    return min; \n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/rangeBitCount.kt",
    "content": "fun rangeBitCount(a: Int, b: Int) = (a..b)\n    .fold(0, {\n        t, i -> Integer.toString(i, 2).replace(\"0\", \"\").length + t\n    })"
  },
  {
    "path": "Arcade/TheCore/Kotlin/reachNextLevel.kt",
    "content": "fun reachNextLevel(experience: Int, threshold: Int, reward: Int) =\n    reward + experience >= threshold"
  },
  {
    "path": "Arcade/TheCore/Kotlin/rectangleRotation.kt",
    "content": "fun solution(a: Int, b: Int): Int {\n    val aBisect: Double = (a / Math.sqrt(2.0)) / 2\n    val bBisect: Double = (b / Math.sqrt(2.0)) / 2\n\n    val rect1: Array<Int> = arrayOf(\n        Math.floor(aBisect).toInt() * 2 + 1,\n        Math.floor(bBisect).toInt() * 2 + 1\n    )\n    \n    val rect2: Array<Int> = arrayOf(\n        if (aBisect - Math.floor(aBisect) < 0.5) rect1[0] - 1 else rect1[0] + 1,\n        if (bBisect - Math.floor(bBisect) < 0.5) rect1[1] - 1 else rect1[1] + 1\n    )\n    \n    return rect1[0] * rect1[1] + rect2[0] * rect2[1]\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/removeArrayPart.kt",
    "content": "fun removeArrayPart(inputArray: MutableList<Int>, l: Int, r: Int) = inputArray.filterIndexed { i, v -> i < l || i > r }"
  },
  {
    "path": "Arcade/TheCore/Kotlin/replaceMiddle.kt",
    "content": "fun replaceMiddle(arr: MutableList<Int>): MutableList<Int> {\n    if (arr.size % 2 == 0) {\n        val sum: Int = arr[arr.size / 2 - 1] + arr[arr.size / 2];\n        \n        arr[arr.size / 2 - 1] = sum;\n        arr.removeAt(arr.size / 2);\n    }\n    \n    return arr;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/rounders.kt",
    "content": "fun rounders(n: Int): Int {\n    val s: String = n.toString();\n    val digits: IntArray = IntArray(s.length) { Integer.parseInt(s[it].toString()) }\n\n    (digits.size - 1 downTo 1).forEach {\n        if (digits[it] >= 5) digits[it - 1]++;\n        digits[it] = 0;\n    }\n\n    return Integer.parseInt(digits.joinToString(\"\"));\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/seatsInTheater.kt",
    "content": "fun seatsInTheater(nCols: Int, nRows: Int, col: Int, row: Int) =\n  (nCols - col + 1) * (nRows - row)"
  },
  {
    "path": "Arcade/TheCore/Kotlin/squareDigitsSequence.kt",
    "content": "fun squareDigitsSequence(a0: Int): Int {\n    val seq: MutableList<Int> = mutableListOf(a0);\n    \n    while (true) {\n        val sum: Int = (\"\"+seq[0])\n            .map { Math.pow((\"\"+it).toInt().toDouble(), 2.0) }\n            .sumOf { it.toInt() }\n            \n        if (sum in seq) break;        \n        \n        seq.add(0, sum);\n    }\n    \n    return seq.size + 1;\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/tennisSet.kt",
    "content": "fun tennisSet(score1: Int, score2: Int) =\n    if (score1 > score2) {\n        (score1 == 7 && (score2 == 5 || score2 == 6)) ||\n            (score1 == 6 && (score2 < 5 && score2 >= 0))\n    }\n    else (score2 == 7 && (score1 == 5 || score1 == 6)) ||\n        (score2 == 6 && (score1 < 5 && score1 >= 0))\n"
  },
  {
    "path": "Arcade/TheCore/Kotlin/weakNumbers.kt",
    "content": "fun weakNumbers(n: Int): MutableList<Int> {\n    fun Int.divisors(): Int = (1..this).count { this % it == 0 };\n   \n    fun Int.weakness(): Int {\n        val d: Int = this.divisors();\n        \n        return (1..(this - 1)).count { d < it.divisors() }\n    };\n        \n    val weaknessSet: List<Int> = (1..n).map { it.weakness() };\n    \n    val weakestNumber: Int = weaknessSet.maxOf { it.toDouble() }.toInt();\n    \n    return mutableListOf(\n        weakestNumber,\n        weaknessSet.count { it == weakestNumber }\n    );\n}"
  },
  {
    "path": "Arcade/TheCore/Kotlin/willYou.kt",
    "content": "fun willYou(young: Boolean, beautiful: Boolean, loved: Boolean) =\n    (young && beautiful && !loved) ||\n        (loved && (!young || !beautiful))"
  },
  {
    "path": "Challenges/Java/AddTwoDigits.java",
    "content": "public final class AddTwoDigits {\n\n\tint addTwoDigits(int n) {\n\t    int sum = 0;\n\t    for(char c : (n+\"\").toCharArray()) {\n\t        sum += new Integer(c+\"\");\n\t    }\n\t    return sum;\n\t}\n}\n"
  },
  {
    "path": "Challenges/Java/AddTwoHugeNumbers.java",
    "content": "final class AddTwoHugeNumbers {\n    \n    // Singly-linked lists are already defined with this interface:\n    // class ListNode<T> {\n    //   ListNode(T x) {\n    //     value = x;\n    //   }\n    //   T value;\n    //   ListNode<T> next;\n    // }\n    ListNode<Integer> addTwoHugeNumbers(ListNode<Integer> a, ListNode<Integer> b) {\n        ListNode<Integer> result = new ListNode<Integer>(0);\n        ListNode<Integer> head = result;\n        int carry = 0;\n        a = reverse(a);\n        b = reverse(b); \n        while(a != null || b != null){\n            if(a != null){\n                carry += a.value;\n                a = a.next;\n            }\n            if(b != null){\n                carry += b.value;\n                b = b.next;\n            }\n            head.next = new ListNode<Integer>(carry % 10000);\n            head = head.next;\n            carry = carry / 10000;\n        }\n        if(carry >= 1)\n            head.next= new ListNode<Integer>(carry);\n        \n        return reverse(result.next);\n    }\n\n    ListNode<Integer> reverse(ListNode<Integer> head){\n        ListNode<Integer> prev = null;\n        while(head != null){\n            ListNode<Integer> temp = head.next;\n            head.next = prev;\n            prev = head;\n            head = temp;\n        }\n        return prev;\n    }\n}"
  },
  {
    "path": "Challenges/Java/AdditionWithoutCarrying.java",
    "content": "public final class AdditionWithoutCarrying {\n\t\n\tint additionWithoutCarrying(int a, int b) {\n\t\tint s = 0, t = 1;\n\t    \n\t    while(s < t) {\n\t        s += t * (a / t + b / t) % (t *= 10);\n\t\t}\n\n\t    return s;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/AmendTheSentence.java",
    "content": "final class AmendTheSentence {\n\n\tString amendTheSentence(String s) {\n\t    String output = \"\";\n\t    for(String x : s.split(\"(?=[A-Z])\")) {\n\t        output += x+\" \";\n\t    }\n\t    return output.trim().toLowerCase();\n\t}\t\n}"
  },
  {
    "path": "Challenges/Java/Bomber.java",
    "content": "final class Bomber {\n    int deadEnemies(char[][] field, int x, int y) {\n        int deads = 0;\n        \n        for(int j = x; j < field[0].length; j++) {\n            if(field[y][j] == 'E') deads++;\n            if(field[y][j] == 'W') break;\n        }\n        \n        for(int j = y; j < field.length; j++) {\n            if(field[j][x] == 'E') deads++;\n            if(field[j][x] == 'W') break;\n        }\n        \n        for(int j = x; j >= 0; j--) {\n            if(field[y][j] == 'E') deads++;\n            if(field[y][j] == 'W') break;\n        }\n        \n        for(int j = y; j >= 0; j--) {\n            if(field[j][x] == 'E') deads++;\n            if(field[j][x] == 'W') break;\n        }\n        \n        return deads;\n    }\n\n    int bomber(char[][] field) {\n        int max = 0;\n        \n        for(int i = 0; i < field.length; i++) {\n            for(int j = 0; j < field[0].length; j++) {\n                if(field[i][j] == '0') {\n                    int tmp = deadEnemies(field, j, i);\n                    if(tmp > max) max = tmp; \n                }\n            }\n        }\n        \n        return max;\n    }\n}"
  },
  {
    "path": "Challenges/Java/CampusCup.java",
    "content": "import java.util.Map;\nimport java.util.HashMap;\nimport java.util.stream.Stream;\n\nfinal class CampusCup {\n    \n    String[] campusCup(String[] emails) {\n        Map<String, Integer> points = new HashMap<>();\n        \n        emails = Stream.<String>of(emails)\n            .map(e -> e.replaceFirst(\"^[a-z.]++@\", \"\"))\n            .toArray(String[]::new);\n        \n        for(String s : emails) {\n            if(points.containsKey(s))\n                points.put(s, points.get(s) + 20);\n            else points.put(s, 20);\n        }\n        \n        for(String s : points.keySet()) {\n            int p = points.get(s).intValue();\n            if(p >= 100 && p < 200) p = 3;\n            else if(p >= 200 && p < 300) p = 8;\n            else if(p >= 300 && p < 400) p = 15;\n            else if(p >= 500) p = 25;\n            else p = 0;\n            \n            points.put(s, p);\n        }\n        \n        return points.entrySet().stream()\n            .sorted((a, b) -> a.getKey().compareTo(b.getKey()))\n            .sorted((i, j) -> j.getValue().compareTo(i.getValue()))\n            .map(v -> v.getKey())\n            .toArray(String[]::new);\n    }\n}"
  },
  {
    "path": "Challenges/Java/CatalogUpdate.java",
    "content": "import java.util.*;\nimport java.util.stream.*;\n\n\nfinal class CatalogUpdate {\n\n\tString[][] catalogUpdate(String[][] catalog, String[][] updates) {\n\t    List<List<String>> out = new Vector<>();\n\t    Map<String, Vector<String>> category = new HashMap<>();\n\t    \n\t    for(int i = 0; i < catalog.length; i++)\n\t        category.put(catalog[i][0], new Vector<>());\n\t    \n\t    for(int i = 0; i < catalog.length; i++) {\n\t        for(int j = 1; j < catalog[i].length; j++)\n\t            category.get(catalog[i][0]).add(catalog[i][j]);\n\t    }\n\t    \n\t    for(int i = 0; i < updates.length; i++) {\n\t        if(category.containsKey(updates[i][0])) {\n\t            for(int j = 1; j < updates[i].length; j++)\n\t                category.get(updates[i][0]).add(updates[i][j]);\n\t            continue;\n\t        }\n\t        category.put(updates[i][0], new Vector<>());\n\t        for(int j = 1; j < updates[i].length; j++)\n\t            category.get(updates[i][0]).add(updates[i][j]);\n\t    }\n\t    \n\t    int index = 0;\n\t    for(Map.Entry<String, Vector<String>> me : category.entrySet()) {\n\t        out.add(new Vector<>());\n\t        out.get(index).add(me.getKey());\n\t        for(String s : me.getValue().stream().sorted().toArray(String[]::new))\n\t            out.get(index).add(s);\n\t        index++;\n\t    }\n\t    \n\t    return out.stream().map(e -> e.toArray(String[]::new))\n\t    .sorted( (a, b) -> a[0].compareTo(b[0])).toArray(String[][]::new);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/CharacterParity.java",
    "content": "final class CharacterParity {\n\t\n\tString characterParity(char symbol) {\n\t    if(symbol >= '0' && symbol <= '9') return symbol % 2 == 0 ? \"even\" : \"odd\";\n\t    return \"not a digit\";\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ChristmasTree.java",
    "content": "final class ChristmasTree {\n\n\tString[] christmasTree(int ln, int lh) {\n\t    Vector<String> tree = new Vector<>(ln * lh + ln + 3);\n\t    String line = \"\", blank = \"\";\n\n\t    // tree's crown\n\t    for(int i = 0, p = ln + lh; i < 3; i++) {\n\t        for(int j = 0; j < p - 1; j++) blank += \" \";\n\t        tree.add(i != 2 ? blank+\" \"+\"*\" : blank+\"***\");\n\t        blank = \"\";\n\t    }\n\t    \n\t    // tree's body\n\t    for(int i = 0, p = 5, n = lh + ln - 2; i < ln; i++, p += 2, n--) {\n\t        for(int j = 0, q = p, m = n; j < lh; j++, q += 2, m--) {\n\t            for(int w = 0; w < q; w++) line += \"*\";\n\t            for(int w = 0; w < m; w++) blank += \" \";\n\t            \n\t            tree.add(blank+line);\n\t            line = blank = \"\";\n\t        }\n\t    }\n\t    \n\t    // tree's foot\n\t    for(int i = 0,\n\t    p = (tree.get(tree.size() - 1).length() - lh) / 2;\n\t    i < ln; i++) {\n\t        for(int w = 0; w < lh; w++) line += \"*\";\n\t        for(int w = 0; w < p; w++) blank += \" \";\n\t        \n\t        tree.add(blank+(lh % 2 == 0 ? line+\"*\": line));\n\t        line = blank = \"\";\n\t    }\n\t    \n\t    return tree.toArray(new String[tree.size()]);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ClassifyStrings.java",
    "content": "import java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic final class ClassifyStrings {\n\n    String check(String s) {\n        Pattern reg = Pattern.compile(\"[aeiou]{3}|[^aeiou]{5}\");\n        return (reg.matcher(s).find() ? \"bad\" : \"good\");\n    }\n\n    String classifyStrings(String s) {\n        String res = \"\";\n        if(!s.contains(\"?\")) { res = check(s); }\n        else {\n            String s1 = check(s.replace(\"?\", \"a\"));\n            String s2 = check(s.replace(\"?\", \"n\"));\n            if(s.length() > 4 && s.contains(\"???\")) { res = \"mixed\"; }\n            else if(s1.equals(\"bad\") && s2.equals(\"bad\")) { res = \"bad\"; }\n            else if(s1.equals(\"good\") && s2.equals(\"good\")) { res = \"good\"; }\n            else { res = \"mixed\"; }\n        }\n        return res;\n    }\n}"
  },
  {
    "path": "Challenges/Java/ClosestInTree.java",
    "content": "final class ClosestInTree {\n    //\n    // Binary trees are already defined with this interface:\n    // class Tree<T> {\n    //   Tree(T x) {\n    //     value = x;\n    //   }\n    //   T value;\n    //   Tree<T> left;\n    //   Tree<T> right;\n    // }\n    void recTree(Tree<Integer> t, Vector<Integer> v) {\n        v.add(t.value);\n        if(t.left != null) recTree(t.left, v);\n        if(t.right != null) recTree(t.right, v);\n    }\n\n    int btsTree(Tree<Integer> t, int n) {\n        Vector<Integer> v = new Vector<>();\n        \n        recTree(t, v);\n        \n        v.sort((a, b) -> a.compareTo(b));\n        \n        int l = v.size();\n        \n        if(n >= v.get(l - 1)) return v.get(l - 1);\n        if(n <= v.get(0)) return v.get(0);\n        \n        int mid = 0;\n        \n        for(int i = 0, j = l; i < j;) {\n            mid = (i + j) / 2;\n            \n            if(v.get(mid) == n) return v.get(mid);\n            \n            if(n < v.get(mid)) {\n                if(mid > 0 && n > v.get(mid - 1)) {\n                   return getClosest(v.get(mid - 1), v.get(mid), n);\n                }\n                j = mid;\n                continue;\n            }\n            \n            if(mid < l - 1 && n < v.get(mid + 1)) {\n                return getClosest(v.get(mid), v.get(mid + 1), n);\n            }\n            i = mid + 1;\n        }\n        \n        return v.get(mid);\n    }\n\n    int getClosest(int n1, int n2, int i) {\n        return i - n1 >= n2 - i ? n2 : n1;\n    }\n\n    int closestInTree(Tree<Integer> t, int n) {\n        int o = btsTree(t, n);\n        return o - 1 == n ? o - 2 : o;\n    }\n}"
  },
  {
    "path": "Challenges/Java/CommonCharacterCount2.java",
    "content": "public final class CommonCharacterCount2 {\n    \n    int commonCharacterCount2(String[] s) {\n        int output = 0;\n        Set<Character> set = new HashSet<>();\n\n        for(int i = 97, k = 0; i <= 122; i++, k = 0) {\n            for(String str : s) {\n                if(!str.contains(((char)i)+\"\")) {\n                    k++;\n                    break;\n                }\n            }\n            if(k == 0) {\n                set.add((char)i);\n            }\n        }\n\n        for(char x : set) {\n            int min = 0;\n            for(String str : s) {\n                int count = 0;\n                for(char y : str.toCharArray()) {\n                    if(x == y) {\n                        count++;\n                    }\n                }\n                min = count < min ? count : min == 0 ? count : min;\n            }\n            output += min;\n        }\n        return output;\n    }\n\n}"
  },
  {
    "path": "Challenges/Java/CompanyBotStrategy.java",
    "content": "public final class CompanyBotStrategy {\n\t\n\tdouble companyBotStrategy(int[][] trainingData) {\n\t    int q = 0;\n\t    double sum = 0d;\n\t    \n\t    for(int[] i : trainingData) {\n\t        if(i[1] == 1) {\n\t            q++;\n\t            sum += i[0];\n\t        }\n\t    }\n\n\t    return q > 0 ? sum / q : 0;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ComposeRanges.java",
    "content": "public final class ComposeRanges {\n\n\tString[] composeRanges(int[] n) {\n\t    List<List<Integer>> set = new ArrayList<>();\n\t    List<Integer> ran = new ArrayList<>();\n\t    String[] out = null;\n\t    int l = 0;\n\n\t    for(int i = 0; i < n.length - 1; i++) {\n\t        if(i == 0) ran.add(n[i]);\n\t        if(n[i + 1] - n[i] == 1 || n[i + 1] - n[i] == 0) {\n\t            ran.add(n[i + 1]);\n\t        }\n\t        else {\n\t            set.add(ran);\n\t            ran = new ArrayList<>();\n\t            ran.add(n[i + 1]);\n\t        }\n\t        if(i == n.length - 2) set.add(ran);\n\t    }\n\n\t    l = set.size();\n\t    out = new String[l];\n\t    for(int i = 0; i < l; i++) {\n\t        ran = set.get(i);\n\t        out[i] = ran.size() > 1 ?\n\t            ran.get(0)+\"->\"+ran.get(ran.size() - 1) :\n\t            ran.get(0)+\"\";\n\t    } \n\n\t    return out;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ContainsCloseNums.java",
    "content": "final class ContainsCloseNums {\n\t\n\tboolean containsCloseNums(int[] nums, int k) {\n\t    for(int i = 0; i < nums.length; i++) {\n\t        for(int j = i + 1; j < nums.length; j++) {\n\t            if(nums[i] == nums[j]) {\n\t                if(Math.abs(i - j) <= k) return true;\n\t            }\n\t        }\n\t    }\n\t    \n\t    return false;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ContainsDuplicates.java",
    "content": "final class ContainsDuplicates {\n\n\tboolean containsDuplicates(int[] a) {\n\t    return Arrays.stream(a).distinct().toArray().length != a.length;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/CorrectNonogram.java",
    "content": "import java.util.ArrayList;\n\nfinal class CorrectNonogram {\n\n    boolean correctNonogram(int size, String[][] nonogramField) {\n        int len = (size + 1) / 2, sz = len + size, c = 0;\n        ArrayList<String> row = new ArrayList();\n        ArrayList<String> col = new ArrayList();\n        for(int x = (size + 1) / 2; x < sz; x++) {\n            String val = \"\", reg = \"\";\n            for(int y = 0; y < sz; y++) {\n                row.add(nonogramField[x][y]);\n                col.add(nonogramField[y][x]);\n            }\n            for(int i = len; i < sz; i++) { val += row.get(i); }\n            int d = 0;\n            for(int i = 0; i < len; i++) {\n                if(d == 0) {\n                    if(row.get(i).matches(\"\\\\d+\")) {\n                        reg += \"#{\"+row.get(i)+\"}\";\n                        d++;\n                    }\n                }\n                else {\n                    if(row.get(i).matches(\"\\\\d+\")) {\n                        reg += \".+#{\"+row.get(i)+\"}\";\n                    }\n                }\n            }\n            if(!val.matches(\"\\\\.*\"+reg+\"\\\\.*\")) { c++; }\n            reg = val = \"\";\n            d = 0;\n            for(int i = len; i < sz; i++) { val += col.get(i); }\n            for(int i = 0; i < len; i++) {\n                if(d == 0) {\n                    if(col.get(i).matches(\"\\\\d+\")) {\n                        reg += \"#{\"+col.get(i)+\"}\";\n                        d++;\n                    }\n                }\n                else {\n                    if(col.get(i).matches(\"\\\\d+\")) {\n                        reg += \".+#{\"+col.get(i)+\"}\";\n                    }\n                }\n            }\n            if(!val.matches(\"\\\\.*\"+reg+\"\\\\.*\")) { c++; }\n            col.clear();\n            row.clear();\n        }\n        return c == 0;\n    }\n}"
  },
  {
    "path": "Challenges/Java/CountClouds.java",
    "content": "final class CountClouds {\n\t\n\tint n, m;\n\n\tvoid checker(char sky[][], int i, int j) {\n\t    sky[i][j] = '*';\n\n\t    if(j + 1 < m && sky[i][j + 1] == '1') checker(sky, i, j + 1);\n\t    \n\t    if(i + 1 < n && sky[i + 1][j] == '1') checker(sky, i + 1, j);\n\t    \n\t    if(j - 1 >= 0 && sky[i][j - 1] == '1') checker(sky, i, j - 1);\n\t    \n\t    if(i - 1 >= 0 && sky[i - 1][j] == '1') checker(sky, i - 1, j);\n\t}\n\n\tint countClouds(char[][] skyMap) {\n\t    int u = 0;\n\t    n = skyMap.length;\n\t    m = n > 0 ? skyMap[0].length : 0;\n\t    \n\t    for(int i = 0; i < n; i++) {\n\t        for(int j = 0; j < m; j++) {\n\t            if(skyMap[i][j] == '1') {\n\t                checker(skyMap, i, j);\n\t                u++;\n\t            }\n\t        }\n\t    }\n\t    \n\t    return u;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/DayOfWeek.java",
    "content": "import java.util.Calendar;\n\nfinal class DayOfWeek {\n    \n    int dayOfWeek(String birthdayDate) {\n        Calendar date = Calendar.getInstance();\n        int[] fields = Arrays.stream(birthdayDate.split(\"-\"))\n        .mapToInt(n -> new Integer(n)).toArray();\n        int week = 0, year = fields[2] + 1;\n        \n        date.set(Calendar.YEAR, fields[2]);\n        date.set(Calendar.MONTH, fields[0] - 1);\n        date.set(Calendar.DAY_OF_MONTH, fields[1]);\n        \n        week = date.get(Calendar.DAY_OF_WEEK);\n        \n        if(fields[1] == 29) {\n            for(;; year++) {\n                date.set(Calendar.YEAR, year);\n                if(year % 4 == 0 && year % 100 != 0) {\n                    date.set(Calendar.DAY_OF_MONTH, 29);\n                    if(date.get(Calendar.DAY_OF_WEEK) == week) break;\n                }\n            }  \n        }\n        else {\n            for(;; year++) {\n                date.set(Calendar.YEAR, year);\n                if(date.get(Calendar.DAY_OF_WEEK) == week) break;\n            }  \n        }\n        \n        return year - fields[2];\n    }\n}"
  },
  {
    "path": "Challenges/Java/DomainType.java",
    "content": "final class DomainType {\n\t\n\tString[] domainType(String[] domains) {\n\t    Map<String, String> dMap = new HashMap<>() {\n\t        {\n\t            put(\"com\", \"commercial\");\n\t            put(\"org\", \"organization\");\n\t            put(\"net\", \"network\");\n\t            put(\"info\", \"information\");\n\t        }\n\t    };\n\t    \n\t    return Stream.<String>of(domains).map(e -> {\n\t        Matcher m =  Pattern.compile(\"(?<=\\\\.)[a-z]+$\").matcher(e);\n\t        return m.find() ? m.group() : \"\";\n\t    })\n\t    .map(e -> dMap.get(e))\n\t    .toArray(String[]::new);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/DrawRectangle.java",
    "content": "final class DrawRectangle {\n    \n    char[][] drawRectangle(char[][] canvas, int[] rect) {\n        for(int i = rect[1]; i <= rect[3]; i++) {\n            for(int j = rect[0]; j <= rect[2]; j++) {\n                if((i == rect[1] && j == rect[0])\n                    || (i == rect[1] && j == rect[2])\n                    || (i == rect[3] && j == rect[0])\n                    || (i == rect[3] && j == rect[2]))\n                    canvas[i][j] = '*';\n                    \n                if((i > rect[1] && i < rect[3])\n                    && (j == rect[0] || j == rect[2]))\n                    canvas[i][j] = '|';\n                    \n                if((j > rect[0] && j < rect[2])\n                    && (i == rect[1] || i == rect[3]))\n                    canvas[i][j] = '-';\n            }\n        }\n        \n        return canvas;\n    }\n}"
  },
  {
    "path": "Challenges/Java/EquilibriumPoint.java",
    "content": "final class EquilibriumPoint {\n\t\n\tint equilibriumPoint(int[] a) {   \n\t    int before = 0, after = Arrays.stream(a).sum();\n\n\t    for(int i = 0; i < a.length; i++) {\n\t        before += i == 0 ? 0 : a[i - 1];\n\t        after = a[i] < 0 ? after + a[i] * -1 : after - a[i];\n\t        if(before == after) return i + 1;\n\t    }\n\t    \n\t    return -1;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ExcelSheetColumnNumber.java",
    "content": "public final class ExcelSheetColumnNumber {\n\n\tint excelSheetColumnNumber(String s) {\n\t    int sum = 0, l = s.length() - 1;\n\t    for(int i = 0; i < s.length(); i++, l--) {\n\t        int a = (byte)s.charAt(i) - 64;\n\t        for(int j = 0; j < l; j++) { a *= 26; }\n\t        sum += a;\n\t    }\n\t    return sum;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/FancyRide.java",
    "content": "import java.util.Arrays;\n\npublic final class FancyRide {\n\t\n\tString fancyRide(int l, double[] fares) {\n\t    String[] options = {\"UberX\", \"UberXL\", \"UberPlus\", \"UberBlack\", \"UberSUV\"};\n\t    int i = 0;\n\t    \n\t    Arrays.sort(fares);\n\t    \n\t    for(; i < fares.length; i++) if(fares[i] * l > 20) break;\n\t    \n\t    return options[i > 0 ? i - 1 : 0];\n\t}\n}"
  },
  {
    "path": "Challenges/Java/FareEstimator.java",
    "content": "import java.util.stream.IntStream;\n\nfinal class FareEstimator {\n\n\tdouble[] fareEstimator(int ride_time, int ride_distance, double[] cost_per_minute, double[] cost_per_mile) {\n    \n\t    return IntStream.range(0, cost_per_mile.length)\n\t    .mapToDouble(i -> cost_per_minute[i] * ride_time + cost_per_mile[i] * ride_distance)\n\t    .toArray();\n\t}\n}"
  },
  {
    "path": "Challenges/Java/FileNaming.java",
    "content": "public final class FileNaming {\n\n\tString[] fileNaming(String[] names) {\n\t    List<String> list = new ArrayList();\n\t    for(int i = 0; i < names.length; i++) {\n\t        if(!list.contains(names[i])) {\n\t        \tlist.add(names[i]);\n\t        \tcontinue;\n\t        }\n\t        String s = names[i];\n            for(int n = 1; list.contains(s); n++) {\n                s = names[i]+\"(\"+n+\")\";\n            }\n            list.add(s);\n\t    }\n\t    return list.toArray(new String[list.size()]);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/FindMiddleElement.java",
    "content": "final class FindMiddleElement {\n\t\n\t// Singly-linked lists are already defined with this interface:\n\t// class ListNode<T> {\n\t//   ListNode(T x) {\n\t//     value = x;\n\t//   }\n\t//   T value;\n\t//   ListNode<T> next;\n\t// }\n\t//\n\n\tint findMiddleElement(ListNode<Integer> l) {\n\t    int counter = 0;\n\t    \n\t    for(ListNode<Integer> ref = l; ref != null; ref = ref.next) counter++;\n\t    \n\t    for(int i = 0; l != null && i < counter / 2; l = l.next, i++);\n\t    \n\t    return l.value;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/FindSubarrayBySum.java",
    "content": "final class FindSubarrayBySum {\n\t\n\tint[] findSubarrayBySum(int s, int[] arr) {\n\t    for(int i = 0; i < arr.length; i++) {\n\t        int sum = 0;\n\t        for(int j = i; j < arr.length; j++)\n\t            if((sum += arr[j]) == s) return new int[]{i + 1, j + 1};\n\t    }\n\t    \n\t    return new int[]{-1};\n\t}\n}"
  },
  {
    "path": "Challenges/Java/FractionReducing.java",
    "content": "final class FractionReducing {\n\n\tint[] fractionReducing(int[] fraction) {\n\t    int[] res = new int[2];\n\t    \n\t    for(int i = 1; i < 10; i++) {\n\t        if(fraction[0] % i == 0 && fraction[1] % i == 0) {\n\t            res[0] = fraction[0] / i;\n\t            res[1] = fraction[1] / i;\n\t        }\n\t    }\n\t    \n\t    return res;\n\t}\n}\t"
  },
  {
    "path": "Challenges/Java/GiftSafety.java",
    "content": "public final class GiftSafety {\n\n\tint giftSafety(String gift) {\n\t    int c = 0;\n\t    String[] perms = new String[gift.length() - 2];\n\t    for(int i = 0; i < perms.length; i++) {\n\t        String s = \"\";\n\t        for(int j = i; j < i + 3; j++) { s += gift.charAt(j)+\"\"; }\n\t        perms[i] = s;\n\t    }\n\t    for(String str : perms) {\n\t        String s = \"\";\n\t        for(char ch : str.toCharArray()) {\n\t            if(!s.contains(ch+\"\")) { s += ch+\"\"; }\n\t            else {\n\t                c++;\n\t                break;\n\t            }\n\t        }\n\t    }\n\t    return c;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/HappyNumber.java",
    "content": "import java.util.Set;\nimport java.util.HashSet;\n\nfinal class HappyNumber {\n\n\tboolean happyNumber(int n) {\n\t    Set<Integer> set = new HashSet<>();\n\t    \n\t    while(set.add(n)) {\n\t        int v = (n+\"\").chars().map(e -> new Integer(((char) e)+\"\"))\n\t        .map(e -> e * e).sum();\n\t        \n\t        if(v == 1) return true;\n\t        else n = v;\n\t        \n\t    }\n\t    return false;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/HigherVersion2.java",
    "content": "final class HigherVersion2 {\n\n    int higherVersion2(String a, String b) {\n        String[] r1 = a.split(\"\\\\.\");\n        String[] r2 = b.split(\"\\\\.\");\n        for(int i = 0; ; i++) {\n            try {\n                int t1 = new Integer(r1[i]), t2 = new Integer(r2[i]);\n                if(t1 > t2) { return 1; }\n                if(t1 < t2) { return -1; }\n            }\n            catch(Exception e) { return 0; }\n        }\n    }\n}"
  },
  {
    "path": "Challenges/Java/InsertBits.java",
    "content": "public final class InsertBits {\n\n    int insertBits(int n, int a, int b, int k) {\n        String bn = new StringBuilder(Integer.toBinaryString(n))\n                .reverse().toString(),\n            bk = new StringBuilder(Integer.toBinaryString(k))\n                .reverse().toString(),\n            s = \"\";\n\n        for(int i = 0, l = bn.length(); i < 31 - l; i++) bn += \"0\";\n        for(int i = 0, l = bk.length(); i < 31 - l; i++) bk += \"0\";\n        for(int x = 0, y = -1; x < bn.length(); x++) {\n            if(x >= a && x <= b && y != bk.length() - 1) {\n                y++;\n                s += bk.charAt(y);\n                continue;\n            }\n            s += bn.charAt(x);\n        }\n\n        return Integer.parseInt(new StringBuilder(s).reverse().toString(), 2);\n    }\n}"
  },
  {
    "path": "Challenges/Java/IsListPalindrome.java",
    "content": "import java.util.Vector;\n\nfinal class IsListPalindrome {\n\t\n\t// Singly-linked lists are already defined with this interface:\n\t// class ListNode<T> {\n\t//   ListNode(T x) {\n\t//     value = x;\n\t//   }\n\t//   T value;\n\t//   ListNode<T> next;\n\t// }\n\t//\n\tboolean isListPalindrome(ListNode<Integer> l) {\n\t    Vector<Integer> vec = new Vector<>();\n    \n\t    for(; l != null; l = l.next) vec.add(l.value);\n\t    \n\t    int[] items = vec.stream().mapToInt(n -> n).toArray();\n\t    \n\t    for(int right = 0, left = items.length - 1; left >= 0; right++, left--)\n\t        if(items[right] != items[left]) return false;\n\t    \n\t    return true;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/IsPowerOfTwo2.java",
    "content": "public final class IsPowerOfTwo2 {\n\t\n\tboolean isPowerOfTwo2(long n) {\n    \treturn n > 0 && (n & n - 1) == 0;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/JumpingJimmy.java",
    "content": "public class JumpingJimmy {\n\n\tint jumpingJimmy(int[] tower, int jumpHeight) {\n\t\tint back = 0;\n\t\tfor (int i : tower) {\n\t\t\tif (jumpHeight >= i) {\n\t\t\t\tback += i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\treturn back;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/KthLargestElement.java",
    "content": "import java.util.Arrays;\n\npublic final class KthLargestElement {\n\n\tint kthLargestElement(int[] n, int k) {\n\t    Arrays.sort(n);\n\t    return n[n.length - k];\n\t}\n}"
  },
  {
    "path": "Challenges/Java/LongestCommonSubstring.java",
    "content": "import java.util.regex.Pattern;\nimport java.util.regex.Matcher;\n\npublic final class LongestCommonSubstring {\n\n    int longestCommonSubstring(String s, String t) {\n        int out = 0;\n        Matcher mt = null;\n        for(int x = 1, y = 0; x <= t.length(); x++) {\n            String z = t.substring(y, x);\n            mt = Pattern.compile(z).matcher(s);\n            if(mt.find()) {\n                int c = mt.group().length();\n                out = (c > out) ? c : out;\n                System.out.println(z);\n                continue;\n            }\n            y = (out > 1) ? x - 1 : x;\n            \n        }\n        return out;\n    }\n\n\n    public static void main(String[] args) {\n        String s = \"abcdxyz\";\n        String t = \"xyzabcd\";\n        int res = new LongestCommonSubstring().longestCommonSubstring(s, t);\n        System.out.println(res); // it shows 4\n    }   \n}"
  },
  {
    "path": "Challenges/Java/Lrc2subRip.java",
    "content": "public final class Lrc2subRip {\n\n\tString formatConverter(String str) {\n\t\tString[] v = str.replace('.', ':').split(\":\");\n\t\tString hh = \"00\", mm = v[0];\n\t\tint tmp = Integer.valueOf(mm).intValue();\n\t\tif(tmp - 60 >= 0) {\n\t\t\thh = \"01\";\n\t\t\ttmp -= 60;\n\t\t\tmm = (tmp < 10) ? \"0\"+tmp+\"\" : tmp+\"\";\n\t\t}\n\t\treturn hh+\":\"+mm+\":\"+v[1]+\",\"+v[2]+\"0\";\n\t}\n\n\tString[] lrc2subRip(String[] lrcLyrics, String songLength) {\n\t    int len = lrcLyrics.length;\n\t    String[] times = new String[len];\n\t    String[] lyrics = new String[len];\n\t    ArrayList<String> output =  new ArrayList();\n\t    songLength = songLength+\",000\";\n\t    for(int i = 0; i < len; i++) {\n\t        times[i] = lyrics[i] = \"\";\n\t        for(char ch : lrcLyrics[i].toCharArray()) {\n\t            if(ch != '[') {\n\t                if(ch == ']') { break; }\n\t                else { times[i] += ch+\"\"; }\n\t            }\n\t        }\n\t        times[i] = formatConverter(times[i]);\n\t        int k = -1;\n\t        for(char c : lrcLyrics[i].toCharArray()) {\n\t            if(k == 0) { lyrics[i] += c+\"\"; }\n\t            if(c == ' ') { k = 0; }\n\t        }\n\t    }\n\t    for(int i = 0; i < len; i++) {\n\t        output.add((i + 1)+\"\");\n\t        output.add(times[i]+\" --> \"+((i != len - 1) ? times[i + 1] : songLength));\n\t        output.add(lyrics[i]);\n\t        if(i != len - 1) { output.add(\"\"); }\n\t    }\n\t    return output.toArray(new String[output.size()]);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/LunchSequenceChecker.java",
    "content": "import java.util.Map;\nimport java.util.HashMap;\nimport java.util.Vector;\n\nfinal class LaunchSequenceChecker {\n\t\n\tboolean launchSequenceChecker(String[] systemNames, int[] stepNumbers) {\n\t    Map<String, Vector<Integer>> map = new HashMap<>();\n\t    \n\t    for(String s : systemNames) map.put(s, new Vector<>());\n\n\t    for(int i = 0; i < stepNumbers.length; i++)\n\t        map.get(systemNames[i]).add(stepNumbers[i]);\n\t        \n\t    for(Vector<Integer> v : map.values())\n\t        for(int i = 0; i < v.size() - 1; i++)\n\t            if(v.get(i) >= v.get(i + 1)) return false;\n\t    \n\t    return true;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/MaximumSum.java",
    "content": "final class MaximumSum {\n\n    int max;\n\n    void swap(int[] arr, int i, int j) {\n        int tmp = arr[i];\n        arr[i] = arr[j];\n        arr[j] = tmp;\n    }\n\n    void permute(int[] arr, int l, int h, int[][] q) {\n        if(l == h) {\n            int sum = 0;\n            for(int[] e : q) for(int i = e[0]; i <= e[1]; i++) sum += arr[i];\n            if(max < sum) max = sum;\n            return;\n        }\n        for(int i = l; i <= h; i++) {\n            swap(arr, l, i);\n            permute(arr, l + 1, h, q);\n            swap(arr, l, i);\n        }\n    }\n\n    int maximumSum(int[] a, int[][] q) {\n        permute(a, 0, a.length - 1, q);\n        return max;\n    }\n}"
  },
  {
    "path": "Challenges/Java/MergeTwoLinkedLists.java",
    "content": "final class MergeTwoLinkedLists {\n\n // Singly-linked lists are already defined with this interface:\n// class ListNode<T> {\n//   ListNode(T x) {\n//     value = x;\n//   }\n//   T value;\n//   ListNode<T> next;\n// }\n//\n    ListNode<Integer> append(ListNode<Integer> ln, int data) {\n        if(ln == null) {\n            ln = new ListNode(data);\n            return ln;\n        }\n        ListNode<Integer> n = ln;\n        while(n.next != null) { n = n.next; }\n        n.next = new ListNode(data);\n        return ln;\n    }\n\n    ListNode<Integer> mergeTwoLinkedLists(ListNode<Integer> l1, ListNode<Integer> l2) {\n        ArrayList<Integer> list = new ArrayList();\n        Integer[] nums = null;\n        ListNode<Integer> out = null;\n        while(l1 != null) { list.add(l1.value); l1 = l1.next; }\n        while(l2 != null) { list.add(l2.value); l2 = l2.next; }\n        nums = list.toArray(new Integer[list.size()]);\n        Arrays.sort(nums);\n        for(int i : nums) { out = append(out, i); }\n        return out;\n    }\n}"
  },
  {
    "path": "Challenges/Java/MirrorBits.java",
    "content": "final class MirrorBits {\n\t\n\tint mirrorBits(int a) {\n\t    return Integer.parseInt(\n\t    new StringBuilder(Integer.toBinaryString(a)).reverse().toString(), 2);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/MissingNumber.java",
    "content": "final class MissingNumber {\n    \n    int missingNumber(int[] arr) {\n        Set<Integer> set = new HashSet<>();\n        int out = 0;\n\n        for(int i : arr) {\n            set.add(i);\n        }\n        for(int i = 0; i <= arr.length; i++) {\n            if(!set.contains(i)) {\n                out = i;\n                break;\n            }\n        }\n        return out;\n    }\n}"
  },
  {
    "path": "Challenges/Java/NewRoadSystem.java",
    "content": "import java.util.ArrayList;\n\npublic final class NewRoadSystem {\n\n    boolean newRoadSystem(boolean[][] roadRegister) {\n        String l = \"\", r = \"\";\n        int sum1 = 0, sum2 = 0;\n        for(int i = 0; i < roadRegister.length; i++) {\n            for(int j = 0; j < roadRegister[0].length; j++) {\n                if(roadRegister[i][j]) { l += i;  r += j; }\n            }\n        }\n        for(char c : l.toCharArray()) { sum1 += (byte)c; }\n        for(char c : r.toCharArray()) { sum2 += (byte)c; }\n        return sum1 == sum2;\n    }\n}"
  },
  {
    "path": "Challenges/Java/NextLarger.java",
    "content": "public final class NextLarger {\n\n\tint[] nextLarger(int[] a) {\n\t    int l = a.length;\n\t    int[] out = new int[l];\n\n\t    for(int x = -1, i = 0, f = 0; i < l; i++, f = 0) {\n\t        for(int j = i; j < l; j++) {\n\t            if(a[j] > a[i]) {\n\t                f = a[j];\n\t                break;\n\t            }\n\t        }\n\t        out[x += 1] = f > 0 ? f : -1;\n\t    }\n\n\t    return out;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/NthElementFromTheEnd.java",
    "content": "public final class NthElementFromTheEnd {\n\n//Singly-linked lists are already defined with this interface:\n// class ListNode<T> {\n//     ListNode(T x) {\n//       value = x;\n//     }\n//     T value;\n//     ListNode<T> next;\n// }\nint nthElementFromTheEnd(ListNode<Integer> l, int n) {\n        ArrayList<Integer> out = new ArrayList();\n        ListNode<Integer> ln = l;\n        while(ln != null) {\n            out.add(ln.value);\n            ln = ln.next;\n        }\n        return (n > out.size()) ? -1 : out.get(out.size() - n);\n    }\n}"
  },
  {
    "path": "Challenges/Java/PairsSum.java",
    "content": "final class PairsSum {\n\n\tboolean contains(int[] a, int e) {\n\t    for(int i : a) if(i == e) return true;\n\t    return false;\n\t}\n\n\tint pairsSum(int[] a) {\n\t    int pairs = 0;\n\t    \n\t    for(int i = 0; i < a.length; i++) {\n\t        for(int j = i + 1; j < a.length; j++) {\n\t            if(contains(a, a[i] + a[j])) pairs++;\n\t        }\n\t    }\n\t    \n\t    return pairs;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/PolygonPerimeter.java",
    "content": "public final class PolygonPerimeter {\n    \n    int polygonPerimeter(boolean[][] matrix) {\n        int out = 0, leny = matrix.length, lenx = matrix[0].length;\n\n        for(int y = 0; y < leny; y++) {\n            for(int x = 0; x < lenx; x++) {\n                if(matrix[y][x]) {\n                    if(y + 1 == leny || !matrix[y + 1][x]) {\n                        out++;\n                    }\n                    if(y - 1 < 0 || !matrix[y - 1][x]) {\n                        out++;\n                    }\n                    if(x + 1 == lenx || !matrix[y][x + 1]) {\n                        out++;\n                    }\n                    if(x - 1 < 0 || !matrix[y][x - 1]) {\n                        out++;\n                    }\n                }\n            }\n        }\n\n        return out;\n    }\n}"
  },
  {
    "path": "Challenges/Java/PrimesSum2.java",
    "content": "final class PrimeSum2 {\n\n    int primesSum2(int n) {\n        boolean[] prime = new boolean[n + 1];\n        int sum = 0;\n        \n        Arrays.fill(prime, true);\n\n        for(int p = 2; p * p <= n; p++) {\n            if(prime[p]) {\n                for(int i = p * p; i <= n; i += p) prime[i] = false;\n            }\n        }\n\n        for(int i = 2; i <= n; i++) if(prime[i]) sum += i;\n\n        return sum;\n    }\n}"
  },
  {
    "path": "Challenges/Java/ProCategorization.java",
    "content": "final class ProCategorization {\n    \n    String[][][] proCategorization(String[] pros, String[][] preferences) {\n        Map<String, String[]> map = new HashMap<>();\n        List<String[][]> output = new Vector<>();\n        \n        for(int i = 0; i < pros.length; i++)\n            map.put(pros[i], preferences[i]);\n        \n        for(String a : Stream.<String[]>of(preferences)\n        .flatMap(e -> Stream.<String>of(e)).distinct()\n        .sorted().toArray(String[]::new)) {\n            List<String> auxList = new Vector<>();\n            \n            for(String k : map.keySet())\n                if(Stream.<String>of(map.get(k))\n                .anyMatch(e -> e.equals(a)))\n                    auxList.add(k);\n                    \n            output.add(new String[][]{{a},auxList.stream().sorted()\n            .toArray(String[]::new)});\n        }\n        \n        return output.toArray(String[][][]::new);\n    }\n}"
  },
  {
    "path": "Challenges/Java/RangeBitCount.java",
    "content": "final class RangeBitCount {\n\n\tint rangeBitCount(int a, int b) {\n\t    int counter = 0;\n\n\t    for(int i = a; i <= b; i++) {\n\t        for(char ch : Integer.toBinaryString(i).toCharArray()) {\n\t            if(ch == '1') counter++;\n\t        }\n\t    }\n\n\t    return counter;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/RemoveArrayPart.java",
    "content": "final class RemoveArrayPart {\n\t\n\tint[] removeArrayPart(int[] inputArray, int l, int r) {\n\t    return IntStream.range(0, inputArray.length)\n\t    .filter(i -> i < l || i > r).map(i -> inputArray[i]).toArray();\n\t}\n}"
  },
  {
    "path": "Challenges/Java/RemoveDuplicateStrings.java",
    "content": "public final class RemoveDuplicateStrings {\n\n\tString[] removeDuplicateStrings(String[] inputArray) {\n\t    ArrayList<String> list = new ArrayList();\n\t    for(String s : inputArray) {\n\t        if(!list.contains(s)) { list.add(s); }\n\t    }\n\t    return list.toArray(new String[list.size()]);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ReverseInteger.java",
    "content": "public final class ReverseInteger {\n\n    int reverseInteger(int x) {\n        StringBuilder sb = new StringBuilder(Math.abs(x)+\"\");\n        String out = sb.reverse().toString();\n        return (x < 0) ? Integer.valueOf(\"-\"+out) : Integer.valueOf(out);\n    }\n}"
  },
  {
    "path": "Challenges/Java/ReverseLinkedList.java",
    "content": "public final class ReverseLinkedList {\n    \n    // Singly-linked lists are already defined with this interface:\n    // class ListNode<T> {\n    //   ListNode(T x) {\n    //     value = x;\n    //   }\n    //   T value;\n    //   ListNode<T> next;\n    // }\n    //\n    \n    ListNode<Integer> reverse(ListNode<Integer> l) {\n        ListNode<Integer> previous = null, current = l, next = null;\n        while(current != null) {\n            next = current.next;\n            current.next = previous;\n            previous = current;\n            current = next;\n        }\n        return l = previous;\n    }\n\n    ListNode<Integer> reverseLinkedList(ListNode<Integer> l) {\n        ListNode<Integer> out = reverse(l);\n        return out;\n    }\n}"
  },
  {
    "path": "Challenges/Java/ReverseSentence.java",
    "content": "final class ReverseSentence {\n\t\n\tString reverseSentence(String sentence) {\n\t    String out = \"\";\n\t    String[] parts = sentence.split(\" \");\n\t    for(int i = parts.length - 1; i >= 0; i--) {\n\t        out += parts[i]+\" \";\n\t    }\n\t    return out.trim();\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ReverseVowelsOfString.java",
    "content": "public final class ReverseVowelsOfString {\n\t\n\tString reverseVowelsOfString(String s) {\n\t    String output = \"\", vowels = \"\";\n\n\t    for(char ch : s.toCharArray()) {\n\t        if((ch+\"\").matches(\"[aeiouAEIOU]\")) {\n\t            String ss = ch+vowels;\n\t            vowels = ss;\n\t        }\n\t    }\n\n\t    for(int i = 0, x = 0; i < s.length(); i++) {\n\t        if((s.charAt(i)+\"\").matches(\"[aeiouAEIOU]\")) {\n\t            output += vowels.charAt(x);\n\t            x++;\n\t            continue;\n\t        }\n\t        output += s.charAt(i);\n\t    }\n\n\t    return output;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/RotateImage.java",
    "content": "final class RotateImage {\n\n\tint[][] rotateImage(int[][] a) {\n\t    int lh = a.length, lw = a[0].length;\n\t    int[][] out = new int[lh][lw];\n\t    \n\t    for(int i = 0, x = 0; i < lw; i++, x++) {\n\t        for(int j = lh - 1, y = 0; j >= 0; j--, y++) {\n\t            out[i][j] = a[y][x];\n\t        }   \n\t    }\n\t    \n\t    return out;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ShoppingCart.java",
    "content": "class ShoppingCart {\n    \n    String[] shoppingCart(String[] requests) {\n        Set<Item> cart = new TreeSet();\n        int index = 1;\n        \n        for(String s : requests) {\n            String[] parts = s.split(\" : \");\n            \n            switch(parts[0]) {\n                case \"add\":\n                    cart.add(new Item(index, parts[1]));\n                    break;\n                case \"remove\":\n                    for(Item i : cart) {\n                        if(i.name.equals(parts[1])) {\n                            cart.remove(i);\n                            break;\n                        }\n                    }\n                    break;\n                case \"quantity_upd\":\n                    for(Item i : cart) {\n                        if(i.name.equals(parts[1])) {\n                            i.qt += Integer.parseInt(parts[2]);\n                            break;\n                        }\n                    }\n                    break;\n                case \"checkout\":\n                    cart.clear();\n                    break;\n            }\n                \n            index++;\n        }\n        \n        return cart.stream().map(e -> e.name+\" : \"+e.qt)\n            .toArray(String[]::new);\n    }\n}\n\nclass Item implements Comparable<Item> {\n    \n    int index;\n    String name;\n    int qt = 1;\n    \n    Item(int index, String name) {\n        this.index = index;\n        this.name = name;\n    }\n    \n    @Override\n    public int compareTo(Item other) {\n        return this.index - other.index;\n    }\n}"
  },
  {
    "path": "Challenges/Java/ShoppingList.java",
    "content": "import java.util.regex.Pattern;\n\nfinal class ShoppingList {\n\n\tdouble shoppingList(String items) {\n\t    return Pattern.compile(\"\\\\d+(?:\\\\.\\\\d*)?\").matcher(items)\n\t    .results().map(e -> e.group()).mapToDouble(e -> Double.parseDouble(e))\n\t    .sum();\n\t}\n}"
  },
  {
    "path": "Challenges/Java/ShuffledArray.java",
    "content": "import java.util.ArrayList;\nimport java.util.Arrays;\n\npublic final class ShuffledArray {\n\n\tint[] shuffledArray(int[] shuffled) {\n\t    ArrayList<Integer> list = new ArrayList();\n\t    int out = 0, len = shuffled.length, sum = 0;\n\t    int[] res = new int[len - 1];\n\t    for(int i : shuffled) { list.add(i); }\n\t    for(int i = 0; i < len; i++, sum = 0) {\n\t        for(int j = 0; j < len; j++) {\n\t            if(j != i) { sum += list.get(j); }\n\t        }\n\t        if(list.contains(sum)) {\n\t            out = sum;\n\t            break;\n\t        }\n\t    }\n\t    list.remove(new Integer(out));\n\t    for(int i = 0; i < list.size(); i++) { res[i] = list.get(i); }\n\t    Arrays.sort(res);\n\t    return res;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/SortByString.java",
    "content": "final class SortByString {\n\t\n\t\tString sortByString(String s, String t) {\n\t    String out = \"\";\n\t    \n\t    for(char c : t.toCharArray()) {\n\t        while(s.contains(c+\"\")) {\n\t            s = s.replaceFirst(c+\"\", \"\");\n\t            out += c+\"\";\n\t        }\n\t    }\n\t    \n\t    return out;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/SortedSquareArray.java",
    "content": "final class SortedSquareArray {\n\t\n\tint[] sortedSquaredArray(int[] array) {\n\t    return Arrays.stream(array).map(n -> Math.abs(n) * Math.abs(n))\n\t    .sorted().toArray();\n\t}\n}"
  },
  {
    "path": "Challenges/Java/Sudoku2.java",
    "content": "import java.util.Arrays;\n\nfinal class Sudoku2 {\n\n    boolean sudoku2(char[][] grid) {\n        int[] row = new int[9],\n            col = new int[9],\n            box = new int[9];\n        \n        for(int i = 0; i < 9; i++) {\n            for(int j = 0; j < 9; j++) {\n                // check row\n                if(grid[i][j] != '.')\n                    col[new Integer(grid[i][j]+\"\") - 1]++;\n                \n                // check col\n                if(grid[j][i] != '.')\n                    row[new Integer(grid[j][i]+\"\") - 1]++;\n            }\n            \n            // check box\n            if((i + 1) % 3 == 0) {\n                for(int t = 8; t > 0; t -= 3) {\n                    for(int p = t; p > t - 3; p--) {\n                        for(int q = i; q > i - 3; q--) {\n                            if(grid[p][q] != '.')\n                                box[new Integer(grid[p][q]+\"\") - 1]++;\n                        }\n                    }\n                    \n                    for(int p : box) if(p > 1) return false;\n                    \n                    Arrays.fill(box, 0);  \n                }\n            }\n            \n            for(int p = 0; p < 9; p++) {\n                if(row[p] > 1 || col[p] > 1) return false;\n            }\n            \n            Arrays.fill(row, 0);\n            Arrays.fill(col, 0);\n        }\n        \n        return true;\n    }\n}"
  },
  {
    "path": "Challenges/Java/SugarHigh.java",
    "content": "import java.util.ArrayList;\n\npublic class SugarHigh {\n\n\tstatic int[] sugarHigh(int[] candies, int threshold) {\n\t\tArrayList<Integer> list = new ArrayList<Integer>();\n\t\tfor (int i = 0; i < candies.length; i++) {\n\t\t\tif (candies[i] <= threshold) {\n\t\t\t\tlist.add(Integer.valueOf(i));\n\t\t\t\tthreshold -= candies[i];\n\t\t\t}\n\t\t}\n\t\tint[] newArray = new int[list.size()];\n\t\tint idx = 0;\n\t\tfor (Integer i : list) {\n\t\t\tnewArray[idx] = i.intValue();\n\t\t\tidx++;\n\t\t}\n\t\treturn newArray;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/SumOfTwo.java",
    "content": "final class SumOfTwo {\n\n\tboolean sumOfTwo(int[] a, int[] b, int v) {\n\t    Set<Integer> set = new HashSet<>();\n\t    for(int i : a) {\n\t        set.add(v - i < 0 ? (v - i) * -1 : v - i);\n\t    }\n\t    for(int i : b) {\n\t        if(set.contains(i)) {\n\t            return true;\n\t        }\n\t    }\n\t    return false;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/SwitchLights.java",
    "content": "final class SwitchLights {\n\n\tint[] switchLights(int[] a) {\n\t    for(int i = 0; i < a.length; i++) {\n\t        if(a[i] == 1) for(int j = 0; j <= i; j++) a[j] = a[j] == 0 ? 1 : 0;\n\t    }\n\t    return a;\n\t}\n}"
  },
  {
    "path": "Challenges/Java/TriangleExistence.java",
    "content": "public final class TriangleExistence {\n\n\tboolean triangleExistence(int[] sides) {\n\t    int s1 = sides[0] + sides[1];\n\t    int s2 = sides[1] + sides[2];\n\t    int s3 = sides[0] + sides[2];\n\t    return (s1 > sides[2] && s2 > sides[0] && s3 > sides[1]);\n\t}\n}"
  },
  {
    "path": "Challenges/Java/TwoArraysNthElement.java",
    "content": "public final class TwoArraysNthElement {\n\n\tint twoArraysNthElement(int[] array1, int[] array2, int n) {\n\t    ArrayList<Integer> arr = new ArrayList();\n\t    for(int i : array1) { arr.add(i); }\n\t    for(int i : array2) { arr.add(i); }\n\t    Integer[] out = arr.toArray(new Integer[arr.size()]);\n\t    Arrays.sort(out);\n\t    return out[n];\n\t}\n}"
  },
  {
    "path": "Challenges/Java/Zigzag.java",
    "content": "public class Zigzag {\n\n\tstatic int zigzag(int[] a) {\n\t\tif (a.length == 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tint back = 0;\n\t\tfor (int i = 1; i < (a.length - 1); i++) {\n\t\t\tif ((a[i] > a[i+1]) && (a[i] > a[i-1])) {\n\t\t\t\tback++;\n\t\t\t} else if ((a[i] < a[i+1]) && (a[i] < a[i-1])) {\n\t\t\t\tback++;\n\t\t\t}\n\t\t}\n\t\treturn back;\n\t}\n}\n"
  },
  {
    "path": "Challenges/Javascript/amendTheSentence.js",
    "content": "function amendTheSentence(s) {\n    let parts = s.split(/(?=[A-Z])/);\n    return parts.map( (e) => { return e.toLowerCase(); } ).join(\" \");\n}"
  },
  {
    "path": "Challenges/Javascript/characterParity.js",
    "content": "function characterParity(symbol) {\n    let d = symbol.codePointAt(0) - 48;\n    if(d >= 0 && d <= 9) return d % 2 == 0 ? \"even\" : \"odd\";\n    return \"not a digit\";\n}"
  },
  {
    "path": "Challenges/Javascript/climbingStaircase.js",
    "content": "let jumps = []\n\nfunction combination(arr,i, n, rn, u) {\n    if(rn < 0) return;\n\n    if(rn == 0) {\n        let tmp = [];\n        for(let j = 0; j < i; j++) tmp.push(arr[j]);\n        jumps.push(tmp);\t\n        return;\n    }\n\n    for(let k = 1; k <= n; k++) {\n        if(k <= u) {\n            arr[i] = k;\n            combination(arr, i + 1, n, rn - k, u);\n        }\n    }\n}\n\nfunction climbingStaircase(n, k) {\n    combination([], 0, n, n, k);\n    return jumps;\n}"
  },
  {
    "path": "Challenges/Javascript/commonCharacterCount2.js",
    "content": "function commonCharacterCount2(s) {\n    let out = 0, set = [];\n\n    for(let i = 97, k = 0; i <= 122; i++, k = 0) {\n        let ch = '';\n        for(let str of s) {\n            ch = String.fromCharCode(i);\n            if(!str.includes(ch)) {\n                k++;\n                break;\n            }\n        }\n        if(k == 0) {\n            set.push(ch);\n        }\n    }\n\n    for(let x of set) {\n        let min = 0;\n        for(let str of s) {\n            let count = 0;\n            for(let y of str) {\n                if(x === y) {\n                    count++;\n                }\n            }\n            min = count < min ? count : min == 0 ? count : min;\n        }\n        out += min;\n    }\n    return out;\n}\n"
  },
  {
    "path": "Challenges/Javascript/companyBotStrategy.js",
    "content": "function companyBotStrategy(trainingData) {\n    let q = 0, sum = 0;\n    \n    for(let i of trainingData)\n        if(i[1] == 1) {\n            q++;\n            sum += i[0];\n        }\n        \n    return q > 0 ? sum / q : 0;\n}"
  },
  {
    "path": "Challenges/Javascript/containsCloseNums.js",
    "content": "function containsCloseNums(nums, k) {\n    for(let i = 0; i < nums.length; i++) {\n        for(let j = i + 1; j < nums.length; j++) {\n            if(nums[i] == nums[j]) if(Math.abs(i - j) <= k) return true;\n        }\n    }\n    \n    return false;\n}"
  },
  {
    "path": "Challenges/Javascript/containsDuplicates.js",
    "content": "function containsDuplicates(a) {\n    let o = []\n    for(let e of a) if(!o.includes(e)) o.push(e)\n    return o.length != a.length\n}"
  },
  {
    "path": "Challenges/Javascript/domainType.js",
    "content": "function domainType(domains) {\n    let map = {\n        com: \"commercial\",\n        org: \"organization\",\n        net: \"network\",\n        info: \"information\"\n    };\n    \n    return domains\n    .map(e => map[/[a-z]{3,4}$/g.exec(e)])\n}"
  },
  {
    "path": "Challenges/Javascript/fancyRide.js",
    "content": "function fancyRide(l, fares) {\n    let options = [\"UberX\", \"UberXL\", \"UberPlus\", \"UberBlack\", \"UberSUV\"];\n    fares.sort((a, b) => a - b);\n    let i = 0;\n    for(; i < fares.length; i++) if(fares[i] * l > 20) break;\n    return options[i > 0 ? i - 1 : 0];\n}"
  },
  {
    "path": "Challenges/Javascript/fareEstimator.js",
    "content": "function fareEstimator(ride_time, ride_distance, cost_per_minute, cost_per_mile) {\n    let out = [];\n    \n    for(let i = 0; i < cost_per_mile.length; i++)\n        out[i] = cost_per_minute[i] * ride_time + cost_per_mile[i] * ride_distance;\n    \n    return out;\n}"
  },
  {
    "path": "Challenges/Javascript/fileNaming.js",
    "content": "function fileNaming(names) {\n    let list = [];\n    for(let i in names) {\n        if(!list.includes(names[i])) {\n            list.push(names[i]);\n            continue;\n        }\n        let s = names[i];\n        for(let n = 1; list.includes(s); n++) {\n            s = names[i]+\"(\"+n+\")\";\n        }\n        list.push(s);\n    }\n    return list;\n}"
  },
  {
    "path": "Challenges/Javascript/findMiddleElement.js",
    "content": "// Singly-linked lists are already defined with this interface:\n// function ListNode(x) {\n//   this.value = x;\n//   this.next = null;\n// }\n//\nfunction findMiddleElement(l) {\n    let counter = 0;\n    let out = l;\n\t    \n    for(let ref = l; ref != null; ref = ref.next) counter++;\n    \n    for(let i = 0; out != null\n    && i < Math.floor(counter / 2); out = out.next, i++);\n    \n    return out.value;\n\n}"
  },
  {
    "path": "Challenges/Javascript/findSubarrayBySum.js",
    "content": "function findSubarrayBySum(s, arr) {\n    for(let i = 0; i < arr.length; i++) {\n        let sum = 0;\n        for(let j = i; j < arr.length; j++)\n            if((sum += arr[j]) == s) return [i + 1, j + 1];\n    }\n    \n    return [-1];\n}"
  },
  {
    "path": "Challenges/Javascript/happyNumber.js",
    "content": "function happyNumber(n) {\n    let set = [];\n    while(!set.includes(n)) {\n        let sum = 0;\n        set.push(n);\n        \n        for(let e of n+\"\") sum += parseInt(e) ** 2;\n        \n        if(sum == 1) return true;\n        else n = sum;\n    }\n    \n    return false;\n}"
  },
  {
    "path": "Challenges/Javascript/isListPalindrome.js",
    "content": "// Singly-linked lists are already defined with this interface:\n// function ListNode(x) {\n//   this.value = x;\n//   this.next = null;\n// }\n//\nfunction isListPalindrome(l) {\n    let set = [];\n    \n    for(; l !=  null; l = l.next) set.push(l.value);\n    \n    for(let right = 0, left = set.length - 1; left >= 0; right++, left--)\n        if(set[right] != set[left]) return false;\n    \n    return true;\n}\n"
  },
  {
    "path": "Challenges/Javascript/isMAC48Address.js",
    "content": "function isMAC48Address(s) {\n    let re = /[0-9A-F]{2}(-[0-9A-F]{2}){5}/i.exec(s);\n    return re ? re[0] === s : false;\n}"
  },
  {
    "path": "Challenges/Javascript/launchSequenceChecker.js",
    "content": "function launchSequenceChecker(systemNames, stepNumbers) {\n    let map = {};\n    \n    for(let s of systemNames) map[s] = [];\n    \n    for(let i = 0; i < systemNames.length; i++)\n        map[systemNames[i]].push(stepNumbers[i]);\n    \n    for(let s in map)\n        for(let i = 0; i < map[s].length - 1; i++)\n            if(map[s][i] >= map[s][i + 1]) return false;\n    \n    return true;\n}"
  },
  {
    "path": "Challenges/Javascript/maximumSum.js",
    "content": "let max = 0;\n\nfunction swap(a, i, j) {\n    let tmp = a[i];\n    a[i] = a[j];\n    a[j] = tmp;\n}\n\nfunction permute(a, l, h, q) {\n    if(l == h) {\n        let tmp = sum(a, q);\n        if(max < tmp) max = tmp;\n        return;\n    }\n    for(let i = l; i <= h; i++) {\n        swap(a, l, i);\n        permute(a, l + 1, h, q);\n        swap(a, l, i);\n    }\n}\n\nfunction sum(a, q) {\n    let sum = 0;\n    for(let e of q) for(let i = e[0]; i <= e[1]; i++) sum += a[i];\n    return sum;\n}\n\nfunction maximumSum(a, q) {\n    permute(a, 0, a.length - 1, q);\n    return max;\n}"
  },
  {
    "path": "Challenges/Javascript/mirrorBits.js",
    "content": "function reverseString(s) {\n    let out = \"\";\n    for(let i = s.length - 1; i >= 0; i--) out += s[i];\n    return out;\n}\n\nfunction mirrorBits(a) {\n    return parseInt(reverseString((a).toString(2)), 2);\n}"
  },
  {
    "path": "Challenges/Javascript/missingNumber.js",
    "content": "function missingNumber(arr) {\n    let out = 0;\n    for(let i = 0; i <= arr.length; i++) {\n        if(!arr.includes(i)) {\n            out = i;\n            break;\n        }\n    }\n    return out;\n}"
  },
  {
    "path": "Challenges/Javascript/nextLarger.js",
    "content": "function nextLarger(a) {\n    let out = [];\n\n    for(let x = -1, i = 0, f = 0; i < a.length; i++, f = 0) {\n        for(let j = i; j < a.length; j++) {\n            if(a[j] > a[i]) {\n                f = a[j];\n                break;\n            }\n        }\n        out.push(f > 0 ? f : -1);\n    }\n\n    return out;\n}\n"
  },
  {
    "path": "Challenges/Javascript/pairsSum.js",
    "content": "function pairsSum(a) {\n    let pairs = 0;\n    for(let i = 0; i < a.length; i++) {\n        for(let j = i + 1; j < a.length; j++) {\n            if(a.includes(a[i] + a[j])) pairs++;\n        }\n    }\n    return pairs;\n}"
  },
  {
    "path": "Challenges/Javascript/polygonPerimeter.js",
    "content": "function polygonPerimeter(matrix) {\n    let out = 0, leny = matrix.length, lenx = matrix[0].length;\n\n    for(let y = 0; y < leny; y++) {\n        for(let x = 0; x < lenx; x++) {\n            if(matrix[y][x]) {\n                if(y + 1 == leny || !matrix[y + 1][x]) {\n                    out++;\n                }\n                if(y - 1 < 0 || !matrix[y - 1][x]) {\n                    out++;\n                }\n                if(x + 1 == lenx || !matrix[y][x + 1]) {\n                    out++;\n                }\n                if(x - 1 < 0 || !matrix[y][x - 1]) {\n                    out++;\n                }\n            }\n        }\n    }\n\n    return out;\n}"
  },
  {
    "path": "Challenges/Javascript/rangeBitCount.js",
    "content": "function rangeBitCount(a, b) {\n    c = 0;\n    for(let i = a; i <= b; i++) {\n        for(let o of i.toString(2).split(/(?=.)/)) c += parseInt(o);\n    }    \n    return c;\n}"
  },
  {
    "path": "Challenges/Javascript/removeArrayPart.js",
    "content": "function removeArrayPart(a, l, r) {\n    let out = [];\n    for(let i = 0; i < a.length; i++) if(i < l || i > r) out.push(a[i]);\n    return out;\n}"
  },
  {
    "path": "Challenges/Javascript/reverseSentence.js",
    "content": "function reverseSentence(sentence) {\n    return sentence.split(\" \").reverse().join(\" \");\n}"
  },
  {
    "path": "Challenges/Javascript/reverseVowelsOfString.js",
    "content": "function reverseVowelsOfString(s) {\n    let out = \"\", vowels = \"\";\n\n    for(let ch of s) {\n        if(ch.match(/[aeiou]/i) == ch) {\n            let ss = ch+vowels;\n            vowels = ss;\n        }\n    }\n\n    for(let i = 0, x = 0; i < s.length; i++) {\n        let ch = s.charAt(i);\n        if(ch.match(/[aeiou]/i) == ch) {\n            out += vowels[x];\n            x++;\n            continue;\n        }\n        out += ch;\n    }\n    return out;\n}"
  },
  {
    "path": "Challenges/Javascript/rotateImage.js",
    "content": "function rotateImage(a) {\n    let h = a.length, w = a[0].length, out = [];\n    \n    for(let i = 0, r = []; i < h; i++, r = []) {\n        for(let j = w - 1; j >= 0; j--) r.push(a[j][i]);\n        out.push(r);\n    }\n    \n    return out;\n}"
  },
  {
    "path": "Challenges/Javascript/sortByString.js",
    "content": "function sortByString(s, t) {\n    let out = \"\";\n    \n    for(let o of t) {\n        while(s.includes(o)) {\n            s = s.replace(o, \"\");\n            out += o;\n        }\n    }\n    \n    return out;\n}"
  },
  {
    "path": "Challenges/Javascript/sortedSquaredArray.js",
    "content": "function sortedSquaredArray(array) {\n    return array.map(n => Math.abs(n) * Math.abs(n))\n    .sort((a, b) => a - b);\n}"
  },
  {
    "path": "Challenges/Javascript/switchLights.js",
    "content": "function switchLights(a) {\n    for(let i in a) {\n        if(a[i] == 1) a = a.map( (e, j) => e = j > i ? e : e == 1 ? 0 : 1);\n    }\n    return a;\n}"
  },
  {
    "path": "Challenges/Kotlin/companyBotStrategy.kt",
    "content": "fun companyBotStrategy(trainingData: MutableList<MutableList<Int>>): Double {\n\tvar q: Int = 0\n\tvar sum: Double = .0\n\n\tfor (data: MutableList<Int> in trainingData) {\n\t  if (data[1] == 1) {\n\t      q++\n\t      sum += data[0]\n\t  }\n\t}\n\n\treturn if (q > 0) sum / q else .0\n}"
  },
  {
    "path": "Challenges/Python/concatenateArrays.py",
    "content": "def concatenateArrays(a, b):\n    return a + b"
  },
  {
    "path": "Challenges/Python/reverseSentence.py",
    "content": "def reverseSentence(sentence):\n    list = sentence.split(\" \")\n    i, out = list.__len__() - 1, \"\"\n    while i >= 0:\n        out += list[i] + \" \"\n        i -= 1\n    return out[0:-1]"
  },
  {
    "path": "Challenges/Ruby/addTwoDigits.rb",
    "content": "def addTwoDigits(n)\n    m = 0\n    n.to_s.each_char { |c| m += c.to_i }\n    return m\nend\n"
  },
  {
    "path": "Challenges/Ruby/classifyStrings.rb",
    "content": "def classifyStrings s\n    g = -> (a) do\n        return (/[^aeiou]{5}/ =~ a or\n        /[aeiou]{3}/ =~ a) ? \"bad\" : \"good\"\n    end\n    res = nil\n    unless s.include? \"?\" then res = g.call s\n    else\n        s1 = g.call s.gsub(\"?\", \"a\")\n        s2 = g.call s.gsub(\"?\", \"n\")\n        if s.size > 4 and s.include? \"???\" then res = \"mixed\"\n        elsif s1.eql? \"bad\" and s2.eql? \"bad\" then res = \"bad\"\n        elsif s1.eql? \"good\" and s2.eql? \"good\" then res = \"good\"\n        else res = \"mixed\"\n        end\n    end\n    return res\nend"
  },
  {
    "path": "Challenges/Ruby/containsDuplicates.rb",
    "content": "def containsDuplicates(a)\n    return a.uniq.size != a.size\nend\n"
  },
  {
    "path": "Challenges/Ruby/excelSheetColumnNumber.rb",
    "content": "def excelSheetColumnNumber(s)\n\tsum, l = 0, s.size - 1\n\ts.size.times do |i|\n\t\ta = s[i].ord - 64\n\t\tl.times { a *= 26; }\n\t\tsum, l = sum + a, l - 1\n\tend\n\treturn sum\nend"
  },
  {
    "path": "Challenges/Ruby/fractionReducing.rb",
    "content": "def fractionReducing(fraction)\n    res = []\n    \n    (1...10).each do |i|\n        if fraction[0] % i == 0 and fraction[1] % i == 0 then\n            res[0] = fraction[0] / i\n            res[1] = fraction[1] / i\n        end\n    end\n        \n    return res\nend"
  },
  {
    "path": "Challenges/Ruby/giftSafety.rb",
    "content": "def giftSafety(g)\n    c, p = 0, []\n    (g.size - 2).times do |i|\n        s = \"\"\n        (i...(i + 3)).each { |j| s += g[j] }\n        p.push s\n    end\n    p.each { |s| c += 1 unless s.chars.uniq.join.eql? s }\n    return c\nend"
  },
  {
    "path": "Challenges/Ruby/groupsOfAnagrams.rb",
    "content": "def groupsOfAnagrams w\n    w.map{ |x| x.chars.sort.join }.uniq.size\nend"
  },
  {
    "path": "Challenges/Ruby/higherVersion2.rb",
    "content": "def higherVersion2(a, b)\n    x, y, i = a.split(/\\./), b.split(/\\./), 0\n    loop do\n        return 0 unless x[i]\n        t, d = x[i].to_i, y[i].to_i\n        return 1 if t > d\n        return -1 if t < d\n        i += 1\n    end\nend"
  },
  {
    "path": "Challenges/Ruby/isCryptSolution.rb",
    "content": "def isCryptSolution(c, s)\n    r = /^0+\\d+/\n    s.each do |x|\n        3.times do |y|\n            c[y] = c[y].gsub(x[0], x[1]) if c[y].include? x[0]\n        end\n    end\n    return false if r.match?(c[0]) or r.match?(c[1]) or r.match?(c[2])\n    return (c[0].to_i + c[1].to_i == c[2].to_i)\nend"
  },
  {
    "path": "Challenges/Ruby/kthLargestElement.rb",
    "content": "def kthLargestElement(n, k)\n    n.sort[n.size - k]\nend"
  },
  {
    "path": "Challenges/Ruby/newRoadSystem.rb",
    "content": "def newRoadSystem(roadRegister)\n    l, r, sum1, sum2, = \"\", \"\", 0, 0\n    roadRegister.size.times do |i|\n        roadRegister[0].size.times do |j|\n            l, r = l + \"#{i}\", r + \"#{j}\" if roadRegister[i][j]\n        end\n    end\n    l.each_byte { |b| sum1 += b }\n    r.each_byte { |b| sum2 += b }\n    return sum1 == sum2\nend"
  },
  {
    "path": "Challenges/Ruby/nthElementFromTheEnd.rb",
    "content": "# Singly-linked lists are already defined with this interface:\n# class ListNode\n#   attr_accessor :value, :next\n#   def initialize(val)\n#     @value = val\n#     @next = nil\n# end\n#\ndef nthElementFromTheEnd(l, n)\n    out, ln = [], l\n    while ln do\n        out.push ln.value\n        ln = ln.next\n    end\n    return n > out.size ? -1 : out[out.size - n]\nend\n"
  },
  {
    "path": "Challenges/Ruby/removeDuplicateStrings.rb",
    "content": "def removeDuplicateStrings(inputArray)\n    return inputArray.uniq\nend"
  },
  {
    "path": "Challenges/Ruby/reverseInteger.rb",
    "content": "def reverseInteger x\n    a = x.to_s.reverse\n    x < 0 ? (\"-\"+a).to_i : a.to_i\nend"
  },
  {
    "path": "Challenges/Ruby/rowsRearranging.rb",
    "content": "def rowsRearranging(m)\n    m.permutation(m.size).to_a.each do |a|\n        return true if every = -> r do\n            (r.size - 1).times do |y|\n                r[0].each_index do |x|\n                    return false if r[y + 1][x] <= r[y][x]\n                end\n            end\n            return true\n        end.call(a)\n    end\n    return false\nend"
  },
  {
    "path": "Challenges/Ruby/shuffledArray.rb",
    "content": "def shuffledArray(shuffled)\n    out, len, sum = 0, shuffled.size, 0\n    len.times do |i|\n        len.times { |j| sum += shuffled[j] unless j == i }\n        if shuffled.include? sum then\n            out = sum\n            break;\n        end\n        sum = 0\n    end\n    shuffled.delete_at shuffled.index(out)\n    return shuffled.sort!\nend\n"
  },
  {
    "path": "Challenges/Ruby/triangleExistence.rb",
    "content": "def triangleExistence(sides)\n    s1, s2, s3 = sides[0] + sides[1], sides[1] + sides[2], sides[0] + sides[2];\n    return (s1 > sides[2] && s2 > sides[0] && s3 > sides[1]);\nend"
  },
  {
    "path": "Challenges/Ruby/twoArraysNthElement.rb",
    "content": "def twoArraysNthElement(array1, array2, n)\n    return (array1+array2).sort[n]\nend"
  },
  {
    "path": "InterviewPratice/Java/AddTwoHugeNumbers.java",
    "content": "final class addTwoHugeNumbers {\n    \n    // Singly-linked lists are already defined with this interface:\n    // class ListNode<T> {\n    //   ListNode(T x) {\n    //     value = x;\n    //   }\n    //   T value;\n    //   ListNode<T> next;\n    // }\n    ListNode<Integer> addTwoHugeNumbers(ListNode<Integer> a, ListNode<Integer> b) {\n        ListNode<Integer> out = new ListNode<Integer>(0), ref = out;\n        int d = 0;\n        \n        a = reverse(a);\n        b = reverse(b);\n        \n        while(a != null || b != null){\n            \n            if(a != null){\n                d += a.value;\n                a = a.next;\n            }\n            \n            if(b != null){\n                d += b.value;\n                b = b.next;\n            }\n            \n            ref.next = new ListNode<Integer>(d % 10000);\n            ref = ref.next;\n            d = d / 10000;\n        }\n        \n        if(d >= 1) ref.next= new ListNode<Integer>(d);\n        \n        return reverse(out.next);\n    }\n\n    ListNode<Integer> reverse(ListNode<Integer> l){\n        ListNode<Integer> rev = null;\n        \n        for(; l != null; l = l.next) {\n            ListNode<Integer> head = new ListNode<>(l.value);\n            head.next = rev;\n            rev = head;\n        }\n        \n        return rev;\n    }\n}"
  },
  {
    "path": "InterviewPratice/Java/AmendTheSentence.java",
    "content": "final class AmendTheSenteance {\n\n   String amendTheSentence(String s) {\n\t    return Arrays.stream(s.split(\"(?=[A-Z])\"))\n\t    .collect(Collectors.joining(\" \")).toLowerCase();\n\t}\n}"
  },
  {
    "path": "InterviewPratice/Java/ClassifyStrings.java",
    "content": "final class ClassifyStrings {\n\n\tString isGoodOrBad(String s) {\n\t    return Pattern.compile(\"[aeiou]{3}|[^aeiou]{5}\")\n\t    .matcher(s).find() ? \"bad\" : \"good\";\n\t}\n\n\tString classifyStrings(String s) {\n\t    String s1 = null, s2 = null;\n\n\t    if(!s.contains(\"?\")) return isGoodOrBad(s);\n\t    else {\n\t        s1 = isGoodOrBad(s.replace(\"?\", \"a\"));\n\t        s2 = isGoodOrBad(s.replace(\"?\", \"n\"));\n\t        \n\t        if(s1.equals(\"bad\") && s2.equals(\"bad\") && !s.contains(\"???\"))\n\t            return \"bad\";\n\t        \n\t        if(s1.equals(\"good\") && s2.equals(\"good\") && !s.contains(\"???\"))\n\t            return \"good\";\n\t    }\n\n\t    return \"mixed\";\n\t}\n}"
  },
  {
    "path": "InterviewPratice/Java/FirstDuplicate.java",
    "content": "import java.util.Set;\nimport java.util.HashSet;\n\nfinal class FirstDuplicate {\n\n\tint firstDuplicate(int[] a) {\n\t    Set<Integer> set = new HashSet<>();\n\t    \n\t    for(int i : a) if(!set.add(i)) return i;\n\t    \n\t    return -1;\n\t}\n}"
  },
  {
    "path": "InterviewPratice/Java/FirstNotRepeatingCharacter.java",
    "content": "final class FirstNotRepeatingCharacter {\n\n\tchar firstNotRepeatingCharacter(String s) {\n\t    int[] a = new int[26];\n\t    \n\t    for(char c : s.toCharArray()) a[c - 'a']++;\n\t    \n\t    for(char c : s.toCharArray()) if(a[c - 'a'] == 1) return c;\n\t    \n\t    return '_';\n\t}\n}"
  },
  {
    "path": "InterviewPratice/Java/GroupingDishes.java",
    "content": "import java.util.*;\n\nfinal class GroupingDishes {\n\n    String[][] groupingDishes(String[][] dishes) {\n        ArrayList<String[]> carry = new ArrayList<>(), item = new ArrayList<>();\n        ArrayList<String> dish = new ArrayList<>();\n        String[][] output = null;\n\n        for(String[] x : dishes) {\n            for(int y = 1; y < x.length; y++) {\n                ArrayList<String> tmp = new ArrayList<>();\n\n                for(String[] i : dishes) {\n                    for(int j = 1; j < i.length; j++) {\n                        if(x[y] == i[j]) {\n                            tmp.add(i[0]);\n                        }\n                    }\n                }\n\n                if(tmp.size() > 1 &&\n                    !item.contains(tmp) &&\n                    !dish.contains(x[y])) {\n\n                    dish.add(x[y]);\n                    item.add(tmp.toArray(new String[tmp.size()]));\n                }\n            }\n        }\n\n        dish.sort(null);\n        for(int i = 0; i < item.size(); i++) {\n            ArrayList<String> tmp = new ArrayList<>();\n\n            Arrays.sort(item.get(i));\n            \n            tmp.add(dish.get(i));\n            for(String y : item.get(i)) {\n                tmp.add(y);\n            }\n\n            carry.add(tmp.toArray(new String[tmp.size()]));\n        }        \n        \n        // return output.toArray(new String[output.size()][output.get(0).length]);\n        output = new String[carry.size()][carry.get(0).length];\n        for(String[] x : output) {\n            Arrays.fill(x, \"\");\n        }\n\n        for(int j = 0; j < carry.size(); j++) {\n            for(int i = 0; i < carry.get(j).length; i++) {\n                output[j][i] = carry.get(j)[i];\n            }\n        }\n\n        return output;\n    }\n\n    public static void main(String[] arguments) {\n        String[][] dishes = {{\"Salad\", \"Tomato\", \"Cucumber\", \"Salad\", \"Sauce\"},\n                            {\"Pizza\", \"Tomato\", \"Sausage\", \"Sauce\", \"Dough\"},\n                            {\"Quesadilla\", \"Chicken\", \"Cheese\", \"Sauce\"},\n                            {\"Sandwich\", \"Salad\", \"Bread\", \"Tomato\", \"Cheese\"}};\n\n        String[][] gd = new GroupingDishes().groupingDishes(dishes);\n\n        for(String[] x : gd) {\n            for(String y : x) {\n                System.out.print(y+\" \");\n            }\n            System.out.println();\n        }\n    }\n}"
  },
  {
    "path": "InterviewPratice/Java/IsCryptSolution.java",
    "content": "final class IsCryptSolution {\n\n    boolean isCryptSolution(String[] crypt, char[][] solution) {\n        for(int i = 0; i < 3; i++)\n            for(char[] c : solution) crypt[i] = crypt[i].replaceAll(c[0]+\"\", c[1]+\"\");\n\n        for(String s : crypt) if(s.matches(\"0+\\\\d+\")) return false;\n        return Double.parseDouble(crypt[0]) + Double.parseDouble(crypt[1])\n        == Double.parseDouble(crypt[2]);\n    }\n}"
  },
  {
    "path": "InterviewPratice/Java/IsListPalindrome.java",
    "content": "final class IsListPalindrome {\n\n   // Singly-linked lists are already defined with this interface:\n    // class ListNode<T> {\n    //   ListNode(T x) {\n    //     value = x;\n    //   }\n    //   T value;\n    //   ListNode<T> next;\n    // }\n    //\n\n    boolean isListPalindrome(ListNode<Integer> l) {\n        ListNode<Integer> rev = new ListNode<>(null), ref = l;\n        \n        for(; ref != null; ref = ref.next) {\n            ListNode<Integer> tmp = new ListNode<>(ref.value);\n            tmp.next = rev;\n            rev = tmp;\n        }\n        \n        for(; l != null && rev != null; l = l.next, rev = rev.next)\n            if(!l.value.equals(rev.value)) return false;\n        \n        return true;\n    }\n\n}"
  },
  {
    "path": "InterviewPratice/Java/MergeTwoLinkedLists.java",
    "content": "final class mergeTwoLinkedLists {\n\t\n\t// Definition for singly-linked list:\n\t// class ListNode<T> {\n\t//   ListNode(T x) {\n\t//     value = x;\n\t//   }\n\t//   T value;\n\t//   ListNode<T> next;\n\t// }\n\t//\n\tListNode<Integer> mergeTwoLinkedLists(ListNode<Integer> l1, ListNode<Integer> l2) {\n\t    if(l1 == null) return l2;\n\t    \n\t    if(l2 == null) return l1;\n\t    \n\t    if(l1.value < l2.value) {\n\t        l1.next = mergeTwoLinkedLists(l1.next, l2);\n\t        return l1;\n\t    }\n\t    \n\t    l2.next = mergeTwoLinkedLists(l1, l2.next);\n\t    return l2;\n\t}\n}"
  },
  {
    "path": "InterviewPratice/Java/RearrangeLastN.java",
    "content": "final class RearrangeLastN {\n\n    // Singly-linked lists are already defined with this interface:\n    // class ListNode<T> {\n    //   ListNode(T x) {\n    //     value = x;\n    //   }\n    //   T value;\n    //   ListNode<T> next;\n    // }\n    //\n\n    ListNode<Integer> rearrangeLastN(ListNode<Integer> l, int n) {\n        if(l == null) return l;\n        \n        int size = 1;\n        ListNode<Integer> r = l, a = new ListNode<>(null),\n        b = new ListNode<>(null), ra = a, rb = b;\n        \n        for(; r != null; r = r.next, size++);\n        \n        r = l;\n        for(int i = 1; r != null; r = r.next, i++) {\n            if(i < size - n) ra = ra.next = new ListNode<>(r.value);\n            else rb = rb.next = new ListNode<>(r.value);\n        }\n        \n        for(rb = b, ra = a; rb.next != null; rb = rb.next);\n        \n        rb.next = ra.next;\n        \n        return b.next;\n    }\n\n}"
  },
  {
    "path": "InterviewPratice/Java/RemoveKFromList.java",
    "content": "final class RemoveKFromList {\n    \n    // Singly-linked lists are already defined with this interface:\n    // class ListNode<T> {\n    //   ListNode(T x) {\n    //     value = x;\n    //   }\n    //   T value;\n    //   ListNode<T> next;\n    // }\n    //\n    ListNode<Integer> removeKFromList(ListNode<Integer> l, int k) {\n        ListNode<Integer> out = new ListNode<>(null), ref = out;\n        \n        for(; l != null; l = l.next) {\n            if(l.value != k) {\n                ref.next = new ListNode<>(l.value);\n                ref = ref.next;\n            }\n        }\n        \n        return out.next;\n    }\n}"
  },
  {
    "path": "InterviewPratice/Java/ReverseNodeInKGroups.java",
    "content": "final class ReverseNodeInKGroups {\n\n\t// Singly-linked lists are already defined with this interface:\n\t// class ListNode<T> {\n\t//   ListNode(T x) {\n\t//     value = x;\n\t//   }\n\t//   T value;\n\t//   ListNode<T> next;\n\t// }\n\t//\n\tListNode<Integer> reverse(ListNode<Integer> l){\n\t    ListNode<Integer> rev = null;\n\t    \n\t    for(; l != null; l = l.next) {\n\t        ListNode<Integer> head = new ListNode<>(l.value);\n\t        head.next = rev;\n\t        rev = head;\n\t    }\n\t    \n\t    return rev;\n\t}\n\n\tListNode<Integer> reverseNodesInKGroups(ListNode<Integer> l, int k) {\n\t    ListNode<Integer> out = new ListNode<>(null),\n\t    carry = new ListNode<>(null), ref = out, aux = carry;\n\t    int i = 1;\n\t    \n\t    for(; l != null; l = l.next, i++) {\n\t        aux.next = new ListNode<>(l.value);\n\t        aux = aux.next;\n\t        \n\t        if(i % k == 0) {\n\t            ref.next = reverse(carry.next);\n\t            for(; ref.next != null; ref = ref.next);\n\t            \n\t            carry = new ListNode<>(l.value);\n\t            aux = carry;\n\t        }\n\t    }\n\n\t    ref.next = carry.next;\n\t    \n\t    return out.next;\n\t}\n}"
  },
  {
    "path": "InterviewPratice/Java/RotateImage.java",
    "content": "final class RotateImage {\n\n    int[][] rotateImage(int[][] a) {\n        int[][] out = new int[a.length][a[0].length];\n        \n        for(int x = 0, i = a.length - 1; x < out[0].length; x++, i--) {\n            for(int y = 0; y < out.length; y++) out[y][x] = a[i][y];\n        }\n        \n        return out;\n    }\n}"
  },
  {
    "path": "InterviewPratice/Java/Strstr.java",
    "content": "final class Strstr {\n\n\tint strstr(String s, String x) {\n\t    int d = 256, m = x.length(), n = s.length(), q = 7;\n\t    int p = 0, t = 0, h = 1;\n\t\t\t\n\t\t\tfor(int i = 0; i < m - 1; i++) {\n\t\t\t\th = (h * d) % q;\n\t\t\t}\n\n\t\t\tfor(int i = 0; i < m; i++) {\n\t\t\t\tp = (p * d + x.charAt(i)) % q;\n\t\t\t\tt = (t * d + s.charAt(i)) % q;\n\t\t\t}\n\n\t\t\tfor(int i = 0, j = 0; i <= n - m; i++) {\n\t\t\t\tif(p == t) {\n\t\t\t\t\tfor(j = 0; j < m; j++) {\n\t\t\t\t\t\tif(s.charAt(i + j) != x.charAt(j)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (j == m) {\n\t                \treturn i; \n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif(i < n - m) {\n\t\t\t\t\tt = ( d * (t - s.charAt(i) * h) + s.charAt(i + m)) % q;\n\n\t\t\t\t\tif(t < 0) {\n\t\t\t\t\t\tt = (t + q);\n\t\t\t\t\t} \n\t\t\t\t}\n\t\t\t}\n\n\t    return -1;\n\t}\n}"
  },
  {
    "path": "InterviewPratice/Java/Sudoku2.java",
    "content": "import java.util.Arrays;\n\nfinal class Sudoku2 {\n    \n    boolean sudoku2(char[][] grid) {\n        int[] row = new int[9], col = new int[9], box = new int[9];\n\n        for(int i = 0; i < 9; i++) {\n            for(int j = 0; j < 9; j++) {\n                if(grid[i][j] != '.') row[Integer.parseInt(grid[i][j]+\"\") - 1]++;\n                if(grid[j][i] != '.') col[Integer.parseInt(grid[j][i]+\"\") - 1]++;   \n            }\n            \n            for(int j = 0; j < 9; j++) if(row[j] > 1 || col[j] > 1) return false;\n\n            Arrays.fill(row, 0);\n            Arrays.fill(col, 0);\n        }\n        \n        for(int i = 1; i <= 9; i += 3) {\n            for(int j = 1; j <= 9; j += 3) {\n                if(grid[i][j] != '.')\n                    box[Integer.parseInt(grid[i][j]+\"\") - 1]++;\n                    \n                if(grid[i][j + 1] != '.')\n                    box[Integer.parseInt(grid[i][j + 1]+\"\") - 1]++;\n                    \n                if(grid[i - 1][j + 1] != '.')\n                    box[Integer.parseInt(grid[i - 1][j + 1]+\"\") - 1]++;\n                    \n                if(grid[i + 1][j + 1] != '.')\n                    box[Integer.parseInt(grid[i + 1][j + 1]+\"\") - 1]++;\n                    \n                if(grid[i][j - 1] != '.')\n                    box[Integer.parseInt(grid[i][j - 1]+\"\") - 1]++;\n                    \n                if(grid[i - 1][j - 1] != '.')\n                    box[Integer.parseInt(grid[i - 1][j - 1]+\"\") - 1]++;\n                    \n                if(grid[i + 1][j - 1] != '.')\n                    box[Integer.parseInt(grid[i + 1][j - 1]+\"\") - 1]++;\n                    \n                if(grid[i + 1][j] != '.')\n                    box[Integer.parseInt(grid[i + 1][j]+\"\") - 1]++;\n                    \n                if(grid[i - 1][j] != '.')\n                    box[Integer.parseInt(grid[i - 1][j]+\"\") - 1]++;\n                \n                for(int e : box) if(e > 1) return false;\n                \n                Arrays.fill(box, 0);\n            }\n        }\n\n        return true;\n    }\n}"
  },
  {
    "path": "InterviewPratice/Javascript/firstDuplicate.js",
    "content": "const firstDuplicate = (a) => {\n    for(let i = 0; i < a.length; i++) {\n        if(a[Math.abs(a[i]) - 1] < 0) return Math.abs(a[i]);\n        a[Math.abs(a[i]) - 1] = -a[Math.abs(a[i]) - 1];\n    }\n    return -1;\n}"
  },
  {
    "path": "InterviewPratice/Javascript/firstNotRepeatingCharacter.js",
    "content": "const firstNotRepeatingCharacter = (s) => {\n    let a = [];\n    \n    for(let i = 0; i < 26; i++) a.push(0);\n    \n    for(let e of s) a[e.charCodeAt(0) - 97]++;\n\n    for(let e of s) if(a[e.charCodeAt(0) - 97] == 1) return e;\n    \n    return \"_\";\n}"
  },
  {
    "path": "InterviewPratice/Javascript/groupingDishes.js",
    "content": "function groupingDishes(dishes) {\n    let flange = [], stuff = [], output = [];\n\n    for(let i = 0; i < dishes.length; i++) {\n        for(let j = 1; j < dishes[i].length; j++) {\n            let tmp = [];\n\n            for(let x = 0; x < dishes.length; x++) {\n                for(let y = 1; y < dishes[x].length; y++) {\n                    if(dishes[i][j] == dishes[x][y]) {\n                        tmp.push(dishes[x][0]);\n                    }\n                }\n            }\n\n            if(tmp.length > 1 &&\n            !stuff.includes(tmp) &&\n            !flange.includes(dishes[i][j])) {\n                flange.push(dishes[i][j]);\n                stuff.push(tmp);\n            }\n        }\n    }\n\n    flange.sort();\n    for(let i = 0; i < stuff.length; i++) {\n        stuff[i].sort();\n\n        let tmp = [];\n        tmp.push(flange[i]);\n        for(let j = 0; j < stuff[i].length; j++) {\n            tmp.push(stuff[i][j]);\n        }\n        output.push(tmp);\n    }\n\n    return output;\n}\n\nlet dishes = [[\"Salad\", \"Tomato\", \"Cucumber\", \"Salad\", \"Sauce\"],\n            [\"Pizza\", \"Tomato\", \"Sausage\", \"Sauce\", \"Dough\"],\n            [\"Quesadilla\", \"Chicken\", \"Cheese\", \"Sauce\"],\n            [\"Sandwich\", \"Salad\", \"Bread\", \"Tomato\", \"Cheese\"]];\n\nlet input = groupingDishes(dishes);\n\nfor(let i in input) {\n    console.log(input[i]);\n}"
  },
  {
    "path": "InterviewPratice/Javascript/isCryptSolution.js",
    "content": "function isCryptSolution(crypt, solution) {\n    for(let i = 0; i < 3; i++) {\n        for(let c of solution)\n            crypt[i] = crypt[i].replace(new RegExp(c[0], \"g\"), c[1]);\n    }\n    \n    for(let s of crypt) if(/^0+\\d+/g.test(s)) return false;\n    \n    return parseInt(crypt[0]) + parseInt(crypt[1]) == parseInt(crypt[2]);\n}"
  },
  {
    "path": "InterviewPratice/Javascript/mergeTwoLinkedLists.js",
    "content": "// Singly-linked lists are already defined with this interface:\n// function ListNode(x) {\n//   this.value = x;\n//   this.next = null;\n// }\n//\nfunction mergeTwoLinkedLists(l1, l2) {\n    if(l1 == null) return l2;\n    \n    if(l2 == null) return l1;\n    \n    if(l1.value < l2.value) {\n        l1.next = mergeTwoLinkedLists(l1.next, l2);\n        return l1;\n    }\n    \n    l2.next = mergeTwoLinkedLists(l1, l2.next);\n    return l2;\n}"
  },
  {
    "path": "InterviewPratice/Javascript/rotateImage.js",
    "content": "const rotateImage = (a) => {\n    let out = [];\n    \n    for(let i = 0; i < a.length; i++) out.push(new Array(a[0].length));\n        \n    for(let x = 0, i = a.length - 1; x < a[0].length; x++, i--) {\n        for(let y = 0; y < a.length; y++) out[y][x] = a[i][y];\n    }\n    \n    return out;\n}"
  },
  {
    "path": "InterviewPratice/Javascript/sudoku2.js",
    "content": "const check = str => {\n    let c = 0, chars = \"\";\n    for(let i in str) {\n        let ch = str.charAt(i);\n        if(!chars.includes(ch) || ch == \".\") { chars += ch; }\n        else { c++; }\n    }\n    return c == 0;\n};\n\nconst sudoku2 = grid => {\n    let c = 0, str = \"\";\n    for(let i = 0; i < 9; i++, str = \"\") {\n        for(let j = 0; j < 9; j++) { str += grid[i][j]; }\n        c = !check(str) ? c + 1 : c;\n        str = \"\";\n        for(let j = 0; j < 9; j++) { str += grid[j][i]; }\n        c = !check(str) ? c + 1 : c;\n    }\n    for(let i = 0, x = 1; i < 3; i++, x += 3) {\n        str = \"\";\n        for(let j = 0, y = 1; j < 3; j++, y += 3, str = \"\") {\n            str += grid[x][y];\n            str += grid[x][y + 1];\n            str += grid[x - 1][y + 1];\n            str += grid[x + 1][y + 1];\n            str += grid[x][y - 1];\n            str += grid[x - 1][y - 1];\n            str += grid[x + 1][y - 1];\n            str += grid[x + 1][y];\n            str += grid[x- 1][y];\n            c = !check(str) ? c + 1 : c;\n        }\n    }\n    return c == 0;\n};"
  },
  {
    "path": "InterviewPratice/Ruby/firstDuplicate.rb",
    "content": "def firstDuplicate a\n    a.each do |i|\n        return i.abs if a[i.abs - 1] < 0\n        a[i.abs - 1] *= -1\n    end\n    return -1\nend"
  },
  {
    "path": "InterviewPratice/Ruby/firstNotRepeatingCharacter.rb",
    "content": "def firstNotRepeatingCharacter s\n    s.chars.uniq.each do |c|\n        if s.include? c\n            return c if s.chars.count(c) == 1\n        end\n    end\n    return \"_\"\nend"
  },
  {
    "path": "InterviewPratice/runlength_encoding.java",
    "content": "public static String encoding(String inputStream) {\n  int n = inputStream.length();\n  StringBuilder output = new StringBuilder()\n  for (int = 0; i < n; i++) {\n    int count = 1;\n    while (i < n - 1 && inputStream.charAt(i) == inputStream.charAt(i + 1)) {\n      count ++;\n      index ++;\n    }\n    output.append(count);\n    output.append(inputStream.charAt(i));\n    \n  }\n  return output.toString();\n}\n    \n    \n    \n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 Neemias Santos\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# CodeSignal solutions\n![GitHub language count](https://img.shields.io/github/languages/count/neemiassgc/CodeSignal-Solutions?color=blue)\n![GitHub top language](https://img.shields.io/github/languages/top/neemiassgc/CodeSignal-Solutions?label=java&logo=java&color=blue)\n![GitHub license](https://img.shields.io/github/license/neemiassgc/CodeSignal-Solutions?color=blue)\n![GitHub forks](https://img.shields.io/github/forks/neemiassgc/CodeSignal-Solutions?color=blue)\n![GitHub Repo stars](https://img.shields.io/github/stars/neemiassgc/CodeSignal-Solutions?color=blue)\n![GitHub last commit](https://img.shields.io/github/last-commit/neemiassgc/CodeSignal-Solutions?color=blue)\n\nSolutions of coding from [CodeSignal](https://codesignal.com) platform\n"
  }
]