freeCodeCamp/curriculum/challenges/english/08-coding-interview-prep/rosetta-code/compare-a-list-of-strings.e...

3.2 KiB

title id challengeType
Compare a list of strings 596e457071c35c882915b3e4 5

Description

Given a list of arbitrarily many strings, implement a function for each of the following conditions:

test if they are all lexically equal test if every string is lexically less than the one after it (i.e. whether the list is in strict ascending order)

Instructions

Tests

tests:
  - text: <code>allEqual</code> is a function.
    testString: 'assert(typeof allEqual === "function", "<code>allEqual</code> is a function.");'
  - text: <code>azSorted</code> is a function.
    testString: 'assert(typeof azSorted === "function", "<code>azSorted</code> is a function.");'
  - text: '<code>allEqual(["AA", "AA", "AA", "AA"])</code> returns true.'
    testString: 'assert(allEqual(testCases[0]), "<code>allEqual(["AA", "AA", "AA", "AA"])</code> returns true.");'
  - text: '<code>azSorted(["AA", "AA", "AA", "AA"])</code> returns false.'
    testString: 'assert(!azSorted(testCases[0]), "<code>azSorted(["AA", "AA", "AA", "AA"])</code> returns false.");'
  - text: '<code>allEqual(["AA", "ACB", "BB", "CC"])</code> returns false.'
    testString: 'assert(!allEqual(testCases[1]), "<code>allEqual(["AA", "ACB", "BB", "CC"])</code> returns false.");'
  - text: '<code>azSorted(["AA", "ACB", "BB", "CC"])</code> returns true.'
    testString: 'assert(azSorted(testCases[1]), "<code>azSorted(["AA", "ACB", "BB", "CC"])</code> returns true.");'
  - text: '<code>allEqual([])</code> returns true.'
    testString: 'assert(allEqual(testCases[2]), "<code>allEqual([])</code> returns true.");'
  - text: '<code>azSorted([])</code> returns true.'
    testString: 'assert(azSorted(testCases[2]), "<code>azSorted([])</code> returns true.");'
  - text: '<code>allEqual(["AA"])</code> returns true.'
    testString: 'assert(allEqual(testCases[3]), "<code>allEqual(["AA"])</code> returns true.");'
  - text: '<code>azSorted(["AA"])</code> returns true.'
    testString: 'assert(azSorted(testCases[3]), "<code>azSorted(["AA"])</code> returns true.");'
  - text: '<code>allEqual(["BB", "AA"])</code> returns false.'
    testString: 'assert(!allEqual(testCases[4]), "<code>allEqual(["BB", "AA"])</code> returns false.");'
  - text: '<code>azSorted(["BB", "AA"])</code> returns false.'
    testString: 'assert(!azSorted(testCases[4]), "<code>azSorted(["BB", "AA"])</code> returns false.");'

Challenge Seed

function allEqual (arr) {
  // Good luck!
  return true;
}

function azSorted (arr) {
  // Good luck!
  return true;
}

After Test

console.info('after the test');

Solution

function allEqual(a) {
  let out = true;
  let i = 0;
  while (++i < a.length) {
    out = out && (a[i - 1] === a[i]);
  } return out;
}

function azSorted(a) {
  let out = true;
  let i = 0;
  while (++i < a.length) {
    out = out && (a[i - 1] < a[i]);
  } return out;
}