Giter Club home page Giter Club logo

js-scrabble-challenge's Introduction

Scrabble Challenge

Welcome to the Scrabble challenge!

Learning Objectives

  • Build a simple program using classes, functions, loops, and flow control
  • Use git & GitHub to commit work and open a Pull Request

Instructions

  1. Fork this repository and then:
$ git clone [your repo] && cd js-scrabble-challenge
$ npm install # installs dependencies listed in package.json
  1. Run the tests from your project root directory. There should be a lot of failures to begin with. You can run your test suite in a few ways:
$ npm test # or
$ jasmine
# or run jasmine directly
$ ./node_modules/jasmine/bin/jasmine.js
  1. In GitHub, open a Pull Request from your forked repository to the challenge repository.
  2. Implement the criteria below locally and push your code to your repository! Every push to a branch that has an open Pull Request will update it automatically with your changes.
  3. Check the status of the automated tests on the Pull Request - update your implementation if needed.

Task

Given a word, compute the scrabble score for that word.

Letter Values

You'll need these:

Letter Value
A, E, I, O, U, L, N, R, S, T 1
D, G 2
B, C, M, P 3
F, H, V, W, Y 4
K 5
J, X 8
Q, Z 10

Example "cabbage" should be scored as worth 14 points:

  • 3 points for C
  • 1 point for A, twice
  • 3 points for B, twice
  • 2 points for G
  • 1 point for E

And to total:

3 + 2x1 + 2x3 + 2 + 1
= 3 + 2 + 6 + 3
= 14

Acceptance Criteria

let scrabble = new Scrabble('')
scrabble.score() // => 0

let scrabble = new Scrabble(" \t\n")
scrabble.score() // => 0

let scrabble = new Scrabble(null)
scrabble.score() // => 0

let scrabble = new Scrabble('a')
scrabble.score() // => 1

let scrabble = new Scrabble('f')
scrabble.score() // => 4

let scrabble = new Scrabble('street')
scrabble.score() // => 6

let scrabble = new Scrabble('quirky')
scrabble.score() // => 22

let scrabble = new Scrabble('OXYPHENBUTAZONE')
scrabble.score() // => 41

Extended Acceptance Criteria

For some of the extended criteria, you may need to look up functions and techniques you have not used before.

Double and Triple Letter

Your solution should support the ability to define specific letters as double and triple score. Letters that count as double are enclosed in a pair of curly brackets {} - for example, the letter o would be defined as a double letter in in the word dog like this: d{0}g. Triple letters are enclosed in a set of square brackets - for example: d[o]g. Your solution should detect these brackets and apply the correct score modifications. You should add tests for this functionality to the spec file.

Double or Triple Word

Similar to above, your solution should support the ability to define double and triple word scores. To indicate a double word score, the submitted word will be enclose in a pair of curly brackets (for example {dog}), and for triple word score a pair of square brackets ([dog]). Your solution should detect these brackets and apply the correct score modifications. You should add tests for this functionality to the spec file.

Concise Code

Split up your score method in to multiple smaller methods that do one thing only. Read this article on Clean Functions and apply the principles you think are relevant.

js-scrabble-challenge's People

Contributors

dearshrewdwit avatar dan2024 avatar mikemherron avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.