GithubHelp home page GithubHelp logo

hexlet-basics / exercises-javascript Goto Github PK

View Code? Open in Web Editor NEW
44.0 8.0 204.0 4.06 MB

Free Javascript courses

Home Page: https://ru.code-basics.com/languages/javascript

Makefile 8.55% JavaScript 90.45% Dockerfile 0.79% Shell 0.22%
hacktoberfest learn-to-code learn-to-code-for-free learn-to-code-javascript

exercises-javascript's Introduction

exercises-javascript

Github Actions Status

How to contribute

  • Discussions at 'Волонтеры' channel in Telegram

Develop

# setup
make
# run
make compose
# check
make ci-check

# run tests
make compose-test

# run linters and validators
make compose-code-lint
make compose-description-lint
make compose-schema-validate

Hexlet Ltd. logo

This repository is created and maintained by the team and the community of Hexlet, an educational project. Read more about Hexlet.

See most active contributors on hexlet-friends.

exercises-javascript's People

Contributors

amshkv avatar ashikov avatar burenkov-anton avatar corsicanec82 avatar cosvvell avatar danila-shirkov avatar dependabot[bot] avatar dzencot avatar emp7yhead avatar evemrzv avatar ex-oblivione avatar fey avatar greybutton avatar holiqen avatar lazycoder9 avatar malcom1986 avatar mikhaylov-ya avatar mokevnin avatar nataliekonstantinova avatar neihaoo avatar nicha3381 avatar ola-9 avatar prio65 avatar prosweb avatar sollerias avatar ssssank avatar svet-svet avatar unibreakfast avatar vicentequintero avatar zhabinka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

exercises-javascript's Issues

Логически неверное утверждение в тесте

https://ru.code-basics.com/languages/javascript/lessons/nan
В теме NaN абзац:
NaN - специальное значение "не число", которое обычно говорит о том, что была выполнена бессмысленная операция. Результатом любой операции, в которой участвует NaN, будет NaN.
Суть ошибки:
Результатом не любой операции с NaN будет NaN.
Пример :
Nan ** 0
Результат :
1

Сравнение двух чисел не работает

Почему при сравнение двух цифр код не работает? Ведь в условие же написано 1 = 1 то выводить 1, я с if прописал условие, но оно не работает! И в решение учителя нету этого участка кода

const sumOfSeries = (startNumber, endNumber) => {
     let result = 0;

**if (startNumber === endNumber) {
     result = startNumber;
}**

for (let i = startNumber; i <= endNumber; i += 1) {
     result += i;
}

     return result;
}

Запрос по логике в задании к уроку.

Уважаемые господа, доброго времени суток!

Прохожу вот этот урок: Формирование строк в циклах

И самым сложным в нём было понять задание к уроку.

Ситуация следующая. Имеем пример с таким текстом:

  let i = 0;
  // Нейтральный элемент для строк это пустая строка
  let result = '';
  while (i < str.length) {
    // Соединяем в обратном порядке
    result = `${str[i]}${result}`;
    // Тоже самое через конкатенацию
    // Хотя код тут короче, знак `+` может запутать
    // Ощущение что происходит сложение
    // result = str[i] + result;
    i = i + 1;
  }

  return result;
};

const name = 'Bran';
reverse('Bran'); // 'narB'
// Проверка нейтрального элемента
reverse(''); // ''

Текст задания звучит таким образом:

Попробуйте реализовать функцию reverse так, чтобы она обходила строку в обратном порядке.

Но обратный порядок, исходя из примера выше, - это "Bran". Т.е., в примере результат работы функции - "narB", в задании просят реализовать этот пример в обратном порядке. Сложно было понять, что требуется.

Может быть, написать тогда так:

Попробуйте реализовать функцию reverse так, чтобы отсчет начинался с последней буквы в переданном параметре. То бишь, если Bran, то с n?

a mistake in the text of the task

в задании JavaScript Операторы 7/79 JavaScript: Операторы написано
Задание
Напишите программу, которая посчитает разность между числами 6 и -81 и выведет ответ на экран.
но когда пытаешься сделать разность, ответ твой выходит неверный. В задании должно быть указано, что это сумма, и 81 должно быть тогда без минуса
image

Проблема при проверке символа в строке и логического ИЛИ, когда второй символ должен быть в верхнем регистре

В задании JavaScript > Условия внутри тела цикла 74/79 (было ещё в предыдущем, но потерял)

const countChars = (str, char) => { let i = 0; let count = 0; while (i < str.length) { if (str[i] === char || str[i] === char.toUpperCase()) { count = count + 1; } i = i + 1; } return count; }

Проблема в проверке функции if
if (str[i] === char || str[i] === char.toUpperCase())

Проверял с помощью repl.it , проблем не возникает
image

тот же самый код, с добавлением console.log(countChars('HexlET', 'e'));, выводи правильные значения. Просьба проверить.

Лишние скобки

В решении учителя можно убрать одни скобки: console.log(Math.round((Math.random() * 10)));

Корректировка условия задачи || или её решения

javascript → Свойства и Методы 49/77
В условии задачи написано: "...длину отрезка с 6 по 17 символа, ...".
"по 17 символ", насколько мне известно, означает включение 17-го символа в искомый отрезок. В документации к методу substring() определен следующий синтаксис:
str.substring(indexStart[, indexEnd]),
в котором второй аргумент описан так:
"indexEnd
Необязательный. Индекс первого символа, который нужно исключить из возвращенной подстроки."
В решении этой задачи 17-й символ, имея индекс 16, будет исключен из подстроки, длину которой необходимо вывести на экран. Это означает, что решение "console.log(text.substring(5, 16).trim().length);"
не является правильным исходя из условий задания.
Или я ошибаюсь???

Ошибка в задаче.

Error: expect(received).toEqual(expected)
Expected value to equal:
"**5678"
Received:
"****5678"
at /exercises-javascript/modules/40-define-functions/350-naming/test.js:8:19
at test (/exercises-javascript/src/tests.js:27:5)
at Object. (/exercises-javascript/modules/40-define-functions/350-naming/test.js:3:1)
Makefile:2: recipe for target 'test' failed
Друзья, по условию задачи должно быть четыре звездочки, но при правлильном решении условия задачи меняется. Как видите решение правильно, но условие изменилось и теперь требует две звездочки перед номером, когда я меняю в методе чтоб добавить две звездочки пишет ошибку и требует четыре. Че за???

не работает ссылка в теории одного из упражнений

в уроке javascript → Вызов функций 34/77
https://code-basics.ru/languages/javascript/modules/calling-functions/lessons/call
в абзаце про импорты и модули дается ссылка на страницу:
Не заморачивайтесь если вам не понятен смысл этого действа, подробнее о нем можно узнать из курса введение в программирование

image

Задание 35/79 по JS

Кажется, в данном задании не работает объект Math. Не могу вызвать с него не какие математические функции (pow, abs)
Буду благодарен за решение данной проблемы

Ошибка в задаче javascript 16/77

Результат правильный, но другой метод через одинарные ковычки, чтобы не делать лишних экранирований.

  • Did Joffrey agree?
  • He did. He also said "I love using \n."
    Error: expect(received).toBe(expected) // Object.is equality
    Expected: "- Did Joffrey agree?
  • He did. He also said /"I love using //n/"."
    Received: "- Did Joffrey agree?
  • He did. He also said /"I love using //n./""
    Difference:
  • Expected
  • Received
    • Did Joffrey agree?
    • He did. He also said "I love using /n".
    • He did. He also said "I love using /n."
      at expectOutput (/exercises-javascript/src/tests.js:17:21)
      at Object. (/exercises-javascript/modules/25-strings/15-escape-characters/test.js:4:1)
      Makefile:2: recipe for target 'test' failed

Уточнение логики работы кода кнопки "Следующий".

Уважаемые господа, доброго времени суток!

Хотел бы уточнить относительно логики работы кода в курсе обучения основам JavaScript. Например, вот такой URL: Цепочка вызовов.

В правой части страницы расположен блок, где можно невозбранно кодить. В самом низу этого блока располагаются кнопки "Предыдущий", "Проверить", "Следующий".

До момента нажатия на кнопку "Проверить" и успешного прохождения тестов кнопка "Следующий" имеет серый цвет, т.е., по идее, не должна быть активной. После прохождения тестов кнопка "Следующий" меняет цвет на синий, т.е. становится активной, щелкаешь на нее и переходишь на следующий урок.

Ситуация такова: я могу нажать на кнопку "Следующий" еще до момента прохождения тестов, когда она еще имеет серый цвет, и перейти на следующий урок.

Вопрос в следующем: должно ли так быть?

По идее, пока я не пройду успешно тест, усе должно быть заблоковано.

Повторение абзаца

https://ru.code-basics.com/languages/javascript/lessons/deterministic
в статье дважды повторяется один и тот же абзац.
Сколько бы раз мы ни вызывали эту функцию, передавая туда значение 'hexlet', она всегда вернет 6. В свою очередь функция, возвращающая случайное число, не является детерминированной, так как у одного и того же входа (даже если он пустой, то есть параметры не принимаются) мы получим всегда разный результат. Насколько он разный - не важно, даже если хотя бы один из миллиона вызовов вернет что-то другое, эта функция автоматически считается недетерминированной.

Ошибка в задании 40/79

Не проходит решение пишет синтаксическая ошибка.

Проверял даже с решением учителя (такое же как и у меня) не проходит решение.

Очепятки

Доброго времени суток!

  1. Зашел в урок: https://ru.code-basics.com/languages/javascript/modules/strings/lessons/escape-characters

Там, значится, такая опечатка:

// Мы это не изучали, но вы должны видеть правду
// Ниже код, который возвращает длину строки
'a'.length; // 1
'\n'.lenght; // 1 !!!
'\n\n'.lenght; // 2 !!!

Нужно "lenght" исправить на "length"

  1. Зашел в урок: https://ru.code-basics.com/languages/javascript/modules/variables/lessons/definition

Такие, значится, опечатки:
а)

Сама переменная создается и наполняется данными (инициализируется) с помощью инструкция let greeting = 'Father!'.

Вместо "инструкция" нужно написать "инструкции"

б)

Для имени переменной используется любой набор допустимых символов, к которым относятся буквы английского алфавита, цифры и знак -.

"Знак -" - здесь какой-то дикий символ, похож на дефис, на гите показывает вот такую тему:
"знак _-_". Но тут должен быть знак нижнего подчеркивания: "_"

Задание 77/79

Мне представляется в тесте по заданию 77/79 -ошибка в тесте.

Тест не учитывает ситуацию, когда в функцию передается строка, которая начинается с большой буквы.

Например, на это решение тест возвращает следующий ответ.

Решение:

const makeItFunny = (str, nElem) => {
let strLowerCase = str.toLowerCase(); 
let rez = '';
let i = 0;

while (i < str.length) {

  if ((i + 1) % nElem === 0)  {
    rez = rez + strLowerCase[i].toUpperCase();
  } else {
    rez = rez + strLowerCase[i];
  }

  ++i;
}  

return rez;
}

Тест отвечает:

Error: expect(received).toEqual(expected) // deep equality
Expected: "I NevEr LooK bAck"
Received: "i NevEr LooK bAck"
at file:///exercises-javascript/modules/50-loops/50-mutators/test.js:5:22
at test (file:///exercises-javascript/src/tests.js:34:5)

Это принципиально неверно. Согласно условию задачи, от нас требуют написать функцию у которой каждый n-ный элемент переведен в верхний регистр. Почему верным считается возврат, у которого первый символ в верхнем регистре?

Задание

Напишите функцию makeItFunny(), которая принимает на вход строку и возвращает ее копию, у которой каждый n-ный > элемент переведен в верхний регистр. n – задается на входе в функцию.

Проблема в задании Вызов функций 35/77

задание: Вызов функций 35/77

В редакторе пишу:

const soldiersCount = -2309;
// BEGIN
Math.abs(soldiersCount);
// END

В результате консоль выдает

Error: expect(received).toBe(expected) // Object.is equality
Expected: "2309"
Received: ""
at expectOutput (/exercises-javascript/src/tests.js:17:21)
at Object. (/exercises-javascript/modules/35-calling-functions/110-math/test.js:4:1)
Makefile:2: recipe for target 'test' failed

тот же код в https://repl.it выдает корректный результат

Как мы проверяем ваши решения

Уважаемые господа, доброго времени суток.

Прохожу сейчас курс "Основы JavaScript" и на 4-ом уроке столкнулся со следующим.

В задании вы просите:

Выведите на экран число 9780262531962.

Это задание я выполнил буквально, т.е. записал в console.log(9780262531962) число.

В то же время, в решении от учителя используется вот такой синтаксис:

console.log('9780262531962');

Но в моем случае я выведу на экран действительно число, а в случае решения от учителя выведется строка.

Уточните, пожалуйста, почему в решении от учителя записывается именно такой ответ?

Логические операторы 55

return (length > 8 && length < 20) || hasSpecialChars(password);
Указатель || допускает для истинного ответа наличия, как достаточного количества символов в пароле, так и достаточность наличия в пароле специального знака невзирая на количество символов в пароле.

константа или переменная?

Добрый день. Вот нашла несоответствие.

Урок: "Математические функции JavaScript 35/79"

В задании:
Выведите на экран абсолютное значение числа, находящегося в переменной soldiersCount, используя функцию Math.abs().

В редакторе:
const soldiersCount = -2309;

Можно сразу написать, как открыть консоль браузера и запустить команду

В упражнении (JavaScript / Как мы проверяем ваши решения 4/72) есть такой текст:

"Кроме наших тестов, будет крайне полезно экспериментировать с кодом в консоли браузера. В любой ситуации, когда вы недопоняли, или хотите попробовать разные варианты использования, смело открывайте консоль и вводите туда код".

И дана ссылка: https://firefox-source-docs.mozilla.org/devtools-user/browser_console/index.html

Думаю, вместо отправки по ссылке (которую скорее всего откроют и закроют), стоит просто сказать юзеру, как открыть "консоль браузера" (Ctrl + Shift + J, Cmd + Shift + J на Mac) и предложить им сразу запустить там console.log('Hello, World!'); для пробы. Если сразу попробуют, то больше шансов, что потом хотя бы вспомнят, что эта консоль существует.

Объяснить про Tab

В одном из первых уроков можно объяснить, что редактор подсказывает команды, и с помощью Tab, и кнопок ↑, ↓ можно быстро завершать написание команды.

Определение функций 50/79

По тексту, чтобы был в совершенстве: Важное замечание! В задачах где нужно реализовать функцию, эту функцию вызывать не нужно. Вызывать функцию будут автоматизированные тесты, которые проверяют ее работоспособность. Пример с вызовом выше показан только для того, чтобы вы понимали как ваша !!!!!!! фукнция !!!!!!!!!!!! будет использоваться.

ошибка JS урок 68

Не проходит тест при любом написанном коде, выдает:
TypeError: f is not a function
at file:///exercises-javascript/modules/48-conditionals/60-ternary-operator/test.js:4:10
at test (file:///exercises-javascript/src/tests.js:34:5)

Error for task

const one = 'Naharis';
const two = 'Mormont';
const three = 'Sand';

Отсчет символов в языке начинается с 0 а не с 1.

Поэтому 4 символа с третьей строке не существует.

Задание
Вам даны три константы с фамилиями разных людей. Составьте и выведите на экран слово из символов в таком порядке:

третий символ из первой строки
второй символ из второй строки
четвертый символ из третьей строки
пятый символ из второй строки
третий символ из второй строки

Вопрос по решению от учителя.

Доброго времени суток, уважаемые господа!

Хотел бы у вас уточнить, почему в данном уроке: https://ru.code-basics.com/languages/javascript/modules/logic/lessons/logical-operators

Решение от учителя имеет именно такой вид, как на картинке во вложении под номером 1:

Снимок экрана 2020-04-19 в 22 02 46

На картинке во вложении под номером 2 указано как выглядит функция в объяснении к уроку, соответственно, свое решение (номер 3) я основывал на том, как функция определена в объяснении.

И тут я немножко запутался в том, что нужно считать за канон? Потому что сам я больше склоняюсь к определению функции, как в решении у учителя, потому как функция получилась достаточно длинной для одной строчки и, чтобы ее корректно прочитать я бы поставил фигурные скобки и return соответственно.

Невнятное объяснение примера в уроке 64 по JavaSctipt: Слабая типизация - 2.

В примерах ниже не понятно из объяснения, что данные два примера имеют разные предусловия: в первом случае falsy-значения недопустимы, а во втором допустимы.


Выдержка из урока 64 по JavaSctipt: Слабая типизация - 2:

В JavaScript есть два простых правила, по которым происходят преобразования:

  • 0, '', undefined, NaN, null приводятся к false. Эти значения называют falsy.
  • Всё остальное приводится к true

Этим активно пользуются в разработке, например, для определения значения по умолчанию:

const value = name || '';
// Примеры
234 || ''; // 234
'hexlet' || ''; // 'hexlet'

Но здесь есть потенциальный баг. Если name может содержать falsy значения, и ожидаемым поведением прогрммы является присваивание константе value значений типи 0, undefined, NaN или null, то код выше начнет работать неверно:

// Упс
false || ''; // ''
0 || ''; // ''
undefined || ''; // ''

Вопрос по решению от учителя.

Уважаемые господа, доброго времени суток!

Пишу вам очередной вопрос политическага характера. В то время как космические корабли бороздят просторы вселенной, простой народ нуждается в ответах.

Имеем следующие данные.

Урок Синтаксический сахар

Решение от учителя с присвоением переменных (pic1.png):
pic1

Вернемся немного в прошлое. Урок Условия внутри тела цикла

Решение от учителя без присвоения переменных (pic2.png):
pic2

Все еще урок Условия внутри тела цикла, мое решение (pic3.png):
pic3

Вопрос следующий: уточните, пожалуйста, почему такая значительная разница в объявлении и инициализации переменных в решении от учителя на pic1 и pic2? Т.е., в первом случае, для строки str[i], которая состоит из 6 символов, заводится отдельная переменная currentChar, состоящая из 11 символов. Во втором случае ничего не заводится, просто голышиком переменная и метод в длинную строчку. Почему бы тогда не написать так, как в решении на картинке 3? Или вообще вынести в отдельные переменные, чтобы соблюдать одну концепцию в написании решений.

Условные конструкции 68/79 -Решение учителя.

В задании к этому уроку есть пример вызова:

convertText('Hello'); // 'Hello'
convertText('hello'); // 'olleh'
// Не забудьте учесть пустую строку!
convertText(''); // ''

Решение учителя:

import { reverse } from 'hexlet-basics/string';

// BEGIN
const convertText = (text) => {
  const reversable = text[0] !== text[0].toUpperCase();
  return reversable ? reverse(text) : text;
};
// END

export default convertText;

В решении учителя пустую строку не учли и при передаче пустой строки появляется ошибка TypeError: text[0] is undefined

Циклы 74/79

Почему не принимают к решению?
На локальном хосте всё работает.

const countChars = (string, symb) => {
let count = 0;
let i = 0;
while (i < string.length) {
if (string[i].toUpperCase() === symb || string[i].toLowerCase() === symb) count++;
i++;
}
console.log(count)
}

Задание 16/79. Ошибка в примере

Ошибка в примере:
изображение
После строки 'Gregor Clegane' должна быть одна пустая строка, а у вас отображается две, хотя даже в выводе в консоли это выглядит вот так:
изображение

Синтаксические ошибки

Уважаемые господа, доброго времени суток.

Прохожу сейчас курс "Основы JavaScript" и на 5-ом уроке столкнулся со следующим.

Вы пишите:

Вот пример кода с синтаксической ошибкой:

console.log('Hodor'
Если запустить код выше, то мы увидим следующее сообщение: SyntaxError: missing ) after argument list. Подобные синтаксические ошибки в JavaScript относятся к разряду “SyntaxError”. Как видно, в конце приводится путь до файла и номер строчки.

Но в конце не приводится путь до файла и номер строчки. Поправьте, пожалуйста.

Задание 66/79

"Для реализации этой функции вам могут понадобится функции slice() и startsWith()".

Методы?

.toFixed() in Lesson 46

Lesson 46 defines the .toFixed() method which formats a number using fixed-point notation. This method describes as the operation with number, but the authors don't specify that .toFixed() returns string representing the given number.

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.