Oliver Eyton-Williams ee1e8abd87
feat(curriculum): restore seed + solution to Chinese (#40683)
* feat(tools): add seed/solution restore script

* chore(curriculum): remove empty sections' markers

* chore(curriculum): add seed + solution to Chinese

* chore: remove old formatter

* fix: update getChallenges

parse translated challenges separately, without reference to the source

* chore(curriculum): add dashedName to English

* chore(curriculum): add dashedName to Chinese

* refactor: remove unused challenge property 'name'

* fix: relax dashedName requirement

* fix: stray tag

Remove stray `pre` tag from challenge file.

Signed-off-by: nhcarrigan <nhcarrigan@gmail.com>

Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
2021-01-12 19:31:00 -07:00

2.3 KiB
Raw Blame History

id, title, challengeType, videoUrl, dashedName
id title challengeType videoUrl dashedName
594810f028c0303b75339acc ABC问题 5 abc-problem

--description--

您将获得ABC块的集合例如童年字母块。每个街区有20个街区两个字母。块的所有侧面都保证有完整的字母表。块的样本集合

BO

XK

DQ

CP

NA

GT

(回覆)

TG

QD

FS

JW

HU

VI

(一个)

OB

ER

FS

LY

PC

ZM

要记住一些规则:

一旦使用了块上的字母,就不能再使用该块。该函数应该不区分大小写。

实现一个带字符串(单词)的函数,并确定该单词是否可以与给定的块集合拼写。

--hints--

canMakeWord是一个功能。

assert(typeof canMakeWord === 'function');

canMakeWord应该返回一个布尔值。

assert(typeof canMakeWord('hi') === 'boolean');

canMakeWord("bark")应该返回true。

assert(canMakeWord(words[0]));

canMakeWord("BooK")应该返回false。

assert(!canMakeWord(words[1]));

canMakeWord("TReAT")应该返回true。

assert(canMakeWord(words[2]));

canMakeWord("COMMON")应返回false。

assert(!canMakeWord(words[3]));

canMakeWord("squAD")应该返回true。

assert(canMakeWord(words[4]));

canMakeWord("conFUSE")应该返回true。

assert(canMakeWord(words[5]));

--seed--

--after-user-code--

const words = ['bark', 'BooK', 'TReAT', 'COMMON', 'squAD', 'conFUSE'];

--seed-contents--

function canMakeWord(word) {

}

--solutions--

function canMakeWord(word) {
  const characters = 'BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM';
  const blocks = characters.split(' ').map(pair => pair.split(''));

  const letters = [...word.toUpperCase()];
  let length = letters.length;
  const copy = new Set(blocks);

  letters.forEach(letter => {
    for (let block of copy) {
      const index = block.indexOf(letter);

      if (index !== -1) {
        length--;
        copy.delete(block);
        break;
      }
    }
  });
  return !length;
}