Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Блог нуба-шахматиста (https://javascript.ru/forum/offtopic/77034-blog-nuba-shakhmatista.html)

Allegro75 15.03.2019 20:09

Блог шахматиста, новичка в программировании
 
Здравствуйте.

Я решил учиться программированию.
Начинаю с нуля, уже пару месяцев учусь.
Надеюсь, здесь можно вести свой блог.

Последней моей профессией была игра в онлайн-покер.
Ранее я занимался дизайном (полиграфии).
И ещё я люблю шахматы (кандидат в мастера).
Вот мой шахматный канал на youtube - https://www.youtube.com/channel/UCCN...NqvsJK9rd4PpMQ

Мне интересны любые отклики, советы, рекомендации и т. п.
Интересны поскольку я совсем нуб, и вообще-то достаточно смутно представляю себе даже собственно то, чему я хочу научиться)
Цель размыта, она примерно такова - зарабатывать деньги программированием (или чем-то на него похожим)).

Пока мне интересно освоить HTML, CSS и JavaScript.
(PHP, может быть (хотя я не вполне понимаю, зачем он нужен)))
То есть мне хочется уметь делать сайты.
Интернет я люблю, и хотя бы как пользователь понимаю, что это такое).

...

Сейчас среди прочего я решил решать задачки по JavaScript, к-рые нашёл на одном обучающем ресурсе (не знаю, можно ли тут его называть), и за проверку к-рых там уже просят денег.
(А я хочу обучаться по возможности бесплатно)

вот первая из этих задачек:

"
Реализуйте и экспортируйте по умолчанию функцию reverseInt, которая переворачивает цифры в переданном числе и возвращает новое число.

reverseInt(13); // 31
reverseInt(-123); // -321
reverseInt(8900); // 98
"


Вот моё решение:
const reverseInt = (num) => { 
  if (num >= 0) {
    let index = 0;
    let resultStr = '';
    let initStr = num.toString();

    while (index < initStr.length) {
      resultStr = `${initStr[index]}${resultStr}`;
      index += 1;
    }
    return Number(resultStr);
  }

  else {
  let index = 1;
  let resultStr = '';
  let initStr = num.toString();

  while (index < initStr.length) {
      resultStr = `${initStr[index]}${resultStr}`;
      index += 1;
    }
  return (Number(resultStr)) * -1;
  }
}


Я делал и проверял это на repl.it, вроде бы работает.

Проблемы возникли разве что с экспортом по умолчанию.

Я пытался писать первую строку так:
export default function reverseInt(num) {

и это не пролезало.

В ответ на это пишут:
evalmachine.<anonymous>:2
export default function reverseInt(num) {
^^^^^^

SyntaxError: Unexpected token export

и ещё много строчек.

Что не так с моим "export default", не подскажете?

laimas 15.03.2019 20:51

Можно и проще

var n = 8900;
alert(Number(n.toString().split('').reverse().join('')))

Allegro75 15.03.2019 21:15

Сильно, laimas)

Хотя на том ресурсе подразумевалось, что набор знакомых решателям методов очень ограничен.
В частности, с массивами они ещё не знакомы. И т. п.

Но всё равно, конечно, сильно.

Вот разве что, похоже, Ваш метод выдаёт "NaN" на отрицательных числах.

laimas 15.03.2019 21:33

Цитата:

Сообщение от Allegro75
метод выдаёт "NaN" на отрицательных числах

Math.abs()

Rise 15.03.2019 21:36

Цитата:

Сообщение от Allegro75
Что не так с моим "export default", не подскажете?

Экспорты подключаются через импорты, например.

Allegro75 16.03.2019 18:44

Цитата:

Сообщение от Rise (Сообщение 504845)
Экспорты подключаются через импорты, например.

Не понимаю я пока этого.
Видимо, для того, чтобы сделать корректный экспорт мне нужны два файла, что ли - один, из к-рого экспорт; и другой, куда импортируем?
И всего этого на repl.it не сделать?..

...

А пока решил ещё одну задачку:

"
Реализуйте и экспортируйте по умолчанию функцию invertCase, которая меняет в строке регистр каждой буквы на противоположный.

invertCase('Hello, World!'); // hELLO, wORLD!
invertCase('I loVe JS'); // i LOvE js

...используйте свойство length...
...используйте метод toUpperCase...
...используйте метод toLowerCase...

"

Решил так:
const invertCase = (str) => {  
  let index = 0;
  let result = '';
  let lowerStr = str.toLowerCase();
  let upperStr = str.toUpperCase();
  for (; index < str.length; index += 1){
    if (str[index] === lowerStr[index]) {
      result = `${result}${upperStr[index]}`;
    }
    else
    result = `${result}${lowerStr[index]}`;
  }
  return result;
}

рони 16.03.2019 20:14

Allegro75,
чуть покороче ...
const invertCase = (str) => {
    let index = 0;
    let result = '';
    let lowerStr = str.toLowerCase();
    let upperStr = str.toUpperCase();
    for (; index < str.length; index++){
        if (str[index] === lowerStr[index]) {
            result += upperStr[index];
        }
        else result += lowerStr[index];
    }
    return result;
}
alert(invertCase('Hello, World!'));

laimas 16.03.2019 20:30

Цитата:

Сообщение от рони
чуть покороче ...

Можно еще короче :)

return str.replace(/.?/g, function(v) {
    return v == v.toLowerCase() ? v.toUpperCase() : v.toLowerCase()  
})


А, length же не у дел остался. :)

Allegro75 18.03.2019 18:42

Между тем начинаю новый день учёбы с решения ещё одной задачки.

Условие:
Преобразование DNA в RNA
"ДНК и РНК это последовательности нуклеотидов.
Четыре нуклеотида в ДНК это аденин (A), цитозин (C), гуанин (G) и тимин (T).
Четыре нуклеотида в РНК это аденин (A), цитозин (C), гуанин (G) и урацил (U).
Цепь РНК составляется на основе цепи ДНК последовательной заменой каждого нуклеотида:
G -> C
C -> G
T -> A
A -> U
Реализуйте и экспортируйте функцию по умолчанию, которая принимает на вход цепь ДНК и возвращает соответствующую цепь РНК (совершает транскрипцию РНК).

Если во входном параметре нет ни одного нуклеотида (т.е. передана пустая строка), то функция должна вернуть пустую строку.

Если в переданной цепи ДНК встретится "незнакомый" нуклеотид (не являющийся одним из четырех перечисленных выше), то функция должна вернуть null.

dnaToRna('ACGTGGTCTTAA'); // 'UGCACCAGAAUU'
dnaToRna('CCGTA'); // 'GGCAU'
dnaToRna(''); // ''
dnaToRna('ACNTG'); // null

Подсказки
Длина строки str находится так: str.length

"

Решение:
const dnaToRna = (dna) => {
  let index = 0;
  let result = '';
  for (; index < dna.length; index +=1) {
    if (dna[index] === 'G') {
      result += 'C';
    }
    else if (dna[index] === 'C'){
      result += 'G';
    }
    else if (dna[index] === 'T'){
      result += 'A';
    }
    else if (dna[index] === 'A'){
      result += 'U';
    }
    else return null;
  } return result;
}

рони 18.03.2019 18:51

Allegro75,
если что - то повторяется(else if ), может попробовать, это сократить?
5 советов как лучше писать условные конструкции в JavaScript


Часовой пояс GMT +3, время: 16:31.