Files
wehub-resource-sync dde272c4b8
i18n - Build Validation / Validate i18n Builds (24) (push) Has been cancelled
CI - Node.js / Lint (24) (push) Has been cancelled
CI - Node.js / Build (24) (push) Has been cancelled
CI - Node.js / Test (24) (push) Has been cancelled
CI - Node.js / Test - Upcoming Changes (24) (push) Has been cancelled
CI - Node.js / Test - i18n (italian, 24) (push) Has been cancelled
CI - Node.js / Test - i18n (portuguese, 24) (push) Has been cancelled
CD - Docker - GHCR Images / Build and Push Images (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:55:53 +08:00

3.0 KiB

id, title, challengeType, dashedName
id title challengeType dashedName
69738771fb5a7b8b24cca2a0 Challenge 174: Zodiac Finder 28 challenge-174

--description--

Given a date string in the format "YYYY-MM-DD", return the zodiac sign for that date using the following chart:

Date Range Zodiac Sign
March 21 - April 19 "Aries"
April 20 - May 20 "Taurus"
May 21 - June 20 "Gemini"
June 21 - July 22 "Cancer"
July 23 - August 22 "Leo"
August 23 - September 22 "Virgo"
September 23 - October 22 "Libra"
October 23 - November 21 "Scorpio"
November 22 - December 21 "Sagittarius"
December 22 - January 19 "Capricorn"
January 20 - February 18 "Aquarius"
February 19 - March 20 "Pisces"
  • Zodiac signs are based only on the month and day, you can ignore the year.

--hints--

getSign("2026-01-31") should return "Aquarius".

assert.equal(getSign("2026-01-31"), "Aquarius");

getSign("2001-06-10") should return "Gemini".

assert.equal(getSign("2001-06-10"), "Gemini");

getSign("1985-09-07") should return "Virgo".

assert.equal(getSign("1985-09-07"), "Virgo");

getSign("2023-03-19") should return "Pisces".

assert.equal(getSign("2023-03-19"), "Pisces");

getSign("2045-11-05") should return "Scorpio".

assert.equal(getSign("2045-11-05"), "Scorpio");

getSign("1985-12-06") should return "Sagittarius".

assert.equal(getSign("1985-12-06"), "Sagittarius");

getSign("2025-12-30") should return "Capricorn".

assert.equal(getSign("2025-12-30"), "Capricorn");

getSign("2018-10-08") should return "Libra".

assert.equal(getSign("2018-10-08"), "Libra");

getSign("1958-05-04") should return "Taurus".

assert.equal(getSign("1958-05-04"), "Taurus");

--seed--

--seed-contents--

function getSign(dateStr) {

  return dateStr;
}

--solutions--

function getSign(dateStr) {
  const [, monthStr, dayStr] = dateStr.split("-");
  const month = Number(monthStr);
  const day = Number(dayStr);

  if ((month === 3 && day >= 21) || (month === 4 && day <= 19)) return "Aries";
  if ((month === 4 && day >= 20) || (month === 5 && day <= 20)) return "Taurus";
  if ((month === 5 && day >= 21) || (month === 6 && day <= 20)) return "Gemini";
  if ((month === 6 && day >= 21) || (month === 7 && day <= 22)) return "Cancer";
  if ((month === 7 && day >= 23) || (month === 8 && day <= 22)) return "Leo";
  if ((month === 8 && day >= 23) || (month === 9 && day <= 22)) return "Virgo";
  if ((month === 9 && day >= 23) || (month === 10 && day <= 22)) return "Libra";
  if ((month === 10 && day >= 23) || (month === 11 && day <= 21)) return "Scorpio";
  if ((month === 11 && day >= 22) || (month === 12 && day <= 21)) return "Sagittarius";
  if ((month === 12 && day >= 22) || (month === 1 && day <= 19)) return "Capricorn";
  if ((month === 1 && day >= 20) || (month === 2 && day <= 18)) return "Aquarius";
  if ((month === 2 && day >= 19) || (month === 3 && day <= 20)) return "Pisces";
}