Специалисты по JavaScript
238
58
Заранее извиняюсь перед богами программирования в первую очередь. Я совсем новичок и вот такое "Kata" встретил:
Justin has an exceptionally smart dog. In the latest show of its unparalleled intelligence, the dog learned to communicate human words. To do that, it woofs the exact number of times it takes to get to the right letter in the English alphabet. For example, if the dog is interested in the letter "A", it woofs just one time, if it's "B", it woofs two times and so on. Justin is amazed by his pet, but he also finds it challenging to translate the woofs in his head. Write a decoder for him that takes a string of hyphen-separated woofs and returns their human-language representation
Things to keep in mind:
Each valid woof sequence stands for one letter. All of them are guaranteed to end with an exclamation point. A space, on the other hand, is not guaranteed to follow
Justin's audio recorder is not a very good one. Sometimes, it inserts some random sounds that should be ignored. With that in mind, a woof is any sequence of letters that has a "w", an "o", another "o", and an "f" – in that order but not necessarily consecutively and irrespective of the case. If a string has no valid woof sequences, the method should return "nothing to decode!"
Albeit a smart one, Justin's dog is still a dog. Sometimes, it just wants to bark! If the number of woofs in any woof sequence exceeds the number of letters in the English alphabet, you should return "just barking!"
Justin's dog has not yet learned the concept of spaces. The strings may represent more than one human word, but the returned string should not contain any white space characters
While input strings may contain letters of either case, the returned strings should be always in lower case
Examples:
"Woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "hi"
"Woof-woof-woof-woof-woof-woof!Woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof! Woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof!" → "feedme"
"Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "just barking!"
"Shhhh!" → "nothing to decode!"
"WoofWoof!" → "a"
"Shhhhwoof!" → "a"
"Woofshhh! Shhh!" → "a"
"Wofowof!" → "a"
"khkhkhWbzzzzobzzzOghrrrrfseswsw!" → "a"
Я, как полный новичок, думал над этим 3 дня. Трое суток, чёрт возьми. Сложность там на уровне 6 (самое сложное 1, самое лёгкое 8)
То есть, задачка для совсем новичков. Моё решение составило в районе 100 строк, а решение от нормальных людей там в 3 строки.
Собственно, прошу ребят шарящих объяснить, как коротко решить эту задачку. Желательно, код с разъяснениями действий. Хочу словить минусов и разъяснений в решении. Это того стоит.
Хотя бы пойму, как люди это в 3-4 строки решают...
Я не буду сейчас писать код, но идея простая:
1) split по !2) count woof в каждом элементе сплита, перед этим сделать lower()
3) получаем число, по нему изи получить букву, можно просто по ASCII (но я хз можно ли это в js и как, но по идее гуглится за секунду)
Я не супер много пишу на js, мне впадлу на нем решать, но на питоне это было бы типа
letters = input.split(!)letters = [chr(x.lower().count("woof") + 96) for x in letters]
return "".join(letters)
Правда это прям как решение задачи не отправишь, тут энивей придется еще подумать, как обработать just barking и nothing to decode, но в остальных случаях это должно работать
А если эти "woof" стоят вразнобой, сработает?
Типа " o w o f o dd "Данил Низамов сказал(а):↑Я не буду сейчас писать код, но идея простая:
1) split по !2) count woof в каждом элементе сплита, перед этим сделать lower()
3) получаем число, по нему изи получить букву, можно просто по ASCII (но я хз можно ли это в js и как, но по идее гуглится за секунду)
Я не супер много пишу на js, мне впадлу на нем решать, но на питоне это было бы типа
letters = [chr(x.lower().count("woof") + 96) for x in letters]
letters = input.split(!)return "".join(letters)
Правда это прям как решение задачи не отправишь, тут энивей придется еще подумать, как обработать just barking и nothing to decode, но в остальных случаях это должно работатьНажмите, чтобы раскрыть...Если ты можешь это решить на Python я буду прям благодарен. Это лучшее, что я здесь мог бы ожидать. У меня сестра обучается на Python
Если это можно воплотить на Python , то ты просто лучший
Ник пользователя сказал(а):↑А если эти "woof" стоят вразнобой, сработает?
Типа " o w o f o dd "Нажмите, чтобы раскрыть...Нет, я невнимательно прочитал. Ну тогда прям чит решения в пару строк не вижу сходу. Но даже если делать это в тупую, то код получается довольно простым, уверен, что на js будет то же самое
letters = input.split(!)
phrase = []
for x in letters:
x = x.lower()
if len(phrase) > 26:
return "just_barking"
new_x = ""
for char in x:
if char == "w" or char == "o" or char == "f"
new_x += char
num_of_woofs = new_x.count("woof")
if num_of_woofs != 0:
phrase.append(chr(num_of_woofs + 96))
if len(phrase) > 0:
return "".join(letters)else:
return "nothing to decode"
Вообще нет смысла пытаться обязательно делать код как можно короче. В принципе вариант, который я привел выше, кажется ок для такой задачи. В таких языках как питон или js часто можно придумать чит-решение в пару строк, но очень важно, чтобы его все еще можно было нормально прочитать
Я код не проверял, мне лень сейчас. Но мне кажется, что если в нем и есть ошибки, то какие-то мелкие. В целом такое решение должно быть правильнымЕсли скинешь ссылку на кату, я могу быстренько там отдебажить решение и прислать точно правильное. Ну и спрашивай, если что-то не понятно, буду рад объяснить
Данил Низамов сказал(а):↑Я не буду сейчас писать код, но идея простая:
1) split по !2) count woof в каждом элементе сплита, перед этим сделать lower()
3) получаем число, по нему изи получить букву, можно просто по ASCII (но я хз можно ли это в js и как, но по идее гуглится за секунду)
Я не супер много пишу на js, мне впадлу на нем решать, но на питоне это было бы типа
letters = [chr(x.lower().count("woof") + 96) for x in letters]
letters = input.split(!)return "".join(letters)
Правда это прям как решение задачи не отправишь, тут энивей придется еще подумать, как обработать just barking и nothing to decode, но в остальных случаях это должно работатьНажмите, чтобы раскрыть...твой код посчитает woofwoof за два раза, а должен за один
должен считать "woof-" и последний woof отдельно (добавить восклиц знак например)
VovkaKalibrovka сказал(а):↑твой код посчитает woofwoof за два раза, а должен за один
должен считать "woof-" и последний woof отдельно (добавить восклиц знак например)Нажмите, чтобы раскрыть...Да, ты прав, ну я просто не особо вчитывался. Не думаю, что это важно, если чел только начинает прогу, то ему надо в первую очередь посмотреть вообще на подход и на алгоритм. А мелкие баги ему и самому будет полезно почистить
VovkaKalibrovka сказал(а):↑твой код посчитает woofwoof за два раза, а должен за один
должен считать "woof-" и последний woof отдельно (добавить восклиц знак например)Нажмите, чтобы раскрыть...Мой код вот: Он не считает за 2 раза но слишком огромный:
function woofDecoder(str) {
let str2 = str.toLowerCase()
let mas1 = []
let j = 0
console.log(str2)
for (let char of str2) {
if (char === 'w' || char === 'o' || char === 'f' || char === '-' || char === '!') {
mas1<j] = char
j++
}
}
let a = 0
let b = 0
let c = 0
let d = 0
const e = []
let f = -1
for (let i = 0; i < mas1.length; i++) {
if (a >= 1 && b >= 2 && c >= 1 && mas1<i] === '-') {
d++
a = 0, b = 0, c = 0
} else if (a >= 1 && b >= 2 && c >= 1 && mas1<i] === '!') {
f++
d++
e<f] = d
d = 0, a = 0, b = 0, c = 0
} else if (mas1<i] === 'w') {
a++
} else if (mas1<i] === 'o') {
b++
} else if (mas1<i] === 'f') {
c++
}
}
if (e<0] === undefined) {
return 'nothing to decode!'
}
for (let bb = 0; bb < e.length; bb++) {
if (e<bb]+96 > 122) {
return 'just barking!'
}
}
// console.log(e)
function intToChar(int) {
const code = 'a'.charCodeAt(0);
return String.fromCharCode(code-1 + int);
}
for (let aa = 0; aa < e.length; aa++) {
e<aa] = intToChar(e<aa])
}
// console.log(e)
return e.join('') }
Ник пользователя сказал(а):↑Мой код вот: Он не считает за 2 раза но слишком огромный:
function woofDecoder(str) {
let str2 = str.toLowerCase()
let mas1 = []
let j = 0
console.log(str2)
for (let char of str2) {
if (char === 'w' || char === 'o' || char === 'f' || char === '-' || char === '!') {
mas1[j] = char
j++
}
}
let a = 0
let b = 0
let c = 0
let d = 0
const e = []
let f = -1
for (let i = 0; i < mas1.length; i++) {
if (a >= 1 && b >= 2 && c >= 1 && mas1 === '-') {
d++
a = 0, b = 0, c = 0
} else if (a >= 1 && b >= 2 && c >= 1 && mas1 === '!') {
f++
d++
e[f] = d
d = 0, a = 0, b = 0, c = 0
} else if (mas1 === 'w') {
a++
} else if (mas1 === 'o') {
b++
} else if (mas1 === 'f') {
c++
}
}
if (e[0] === undefined) {
return 'nothing to decode!'
}
for (let bb = 0; bb < e.length; bb++) {
if (e[bb]+96 > 122) {
return 'just barking!'
}
}
// console.log(e)
function intToChar(int) {
const code = 'a'.charCodeAt(0);
return String.fromCharCode(code-1 + int);
}
for (let aa = 0; aa < e.length; aa++) {
e[aa] = intToChar(e[aa])
}
// console.log(e)
return e.join('') }Нажмите, чтобы раскрыть...Ну если пришлешь код в каком-то виде, в котором его можно прочесть (а этот мне даже автоформаттер в IDE не правит), то могу написать, что не так
Ник пользователя сказал(а):↑Мой код вот: Он не считает за 2 раза но слишком огромный:
function woofDecoder(str) {
let str2 = str.toLowerCase()
let mas1 = []
let j = 0
console.log(str2)
for (let char of str2) {
if (char === 'w' || char === 'o' || char === 'f' || char === '-' || char === '!') {
mas1[j] = char
j++
}
}
let a = 0
let b = 0
let c = 0
let d = 0
const e = []
let f = -1
for (let i = 0; i < mas1.length; i++) {
if (a >= 1 && b >= 2 && c >= 1 && mas1 === '-') {
d++
a = 0, b = 0, c = 0
} else if (a >= 1 && b >= 2 && c >= 1 && mas1 === '!') {
f++
d++
e[f] = d
d = 0, a = 0, b = 0, c = 0
} else if (mas1 === 'w') {
a++
} else if (mas1 === 'o') {
b++
} else if (mas1 === 'f') {
c++
}
}
if (e[0] === undefined) {
return 'nothing to decode!'
}
for (let bb = 0; bb < e.length; bb++) {
if (e[bb]+96 > 122) {
return 'just barking!'
}
}
// console.log(e)
function intToChar(int) {
const code = 'a'.charCodeAt(0);
return String.fromCharCode(code-1 + int);
}
for (let aa = 0; aa < e.length; aa++) {
e[aa] = intToChar(e[aa])
}
// console.log(e)
return e.join('') }Нажмите, чтобы раскрыть...плевать что код большой если ты только начинаешь
идея вообще правильная, сначала отфильтровать строку от лишних символов (не 'w' 'o' 'f' '-' '!') но твой код не учитывает что если woof- 27 раз идёт то должно вернуть just barking а он вернёт 123 символ в ASCII таблице (это будет "{" )
Ник пользователя сказал(а):↑Заранее извиняюсь перед богами программирования в первую очередь. Я совсем новичок и вот такое "Kata" встретил:
Justin has an exceptionally smart dog. In the latest show of its unparalleled intelligence, the dog learned to communicate human words. To do that, it woofs the exact number of times it takes to get to the right letter in the English alphabet. For example, if the dog is interested in the letter "A", it woofs just one time, if it's "B", it woofs two times and so on. Justin is amazed by his pet, but he also finds it challenging to translate the woofs in his head. Write a decoder for him that takes a string of hyphen-separated woofs and returns their human-language representation
Things to keep in mind:
Each valid woof sequence stands for one letter. All of them are guaranteed to end with an exclamation point. A space, on the other hand, is not guaranteed to follow
Justin's audio recorder is not a very good one. Sometimes, it inserts some random sounds that should be ignored. With that in mind, a woof is any sequence of letters that has a "w", an "o", another "o", and an "f" – in that order but not necessarily consecutively and irrespective of the case. If a string has no valid woof sequences, the method should return "nothing to decode!"
Albeit a smart one, Justin's dog is still a dog. Sometimes, it just wants to bark! If the number of woofs in any woof sequence exceeds the number of letters in the English alphabet, you should return "just barking!"
Justin's dog has not yet learned the concept of spaces. The strings may represent more than one human word, but the returned string should not contain any white space characters
While input strings may contain letters of either case, the returned strings should be always in lower case
Examples:
"Woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "hi"
"Woof-woof-woof-woof-woof-woof!Woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof! Woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof!" → "feedme"
"Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "just barking!"
"Shhhh!" → "nothing to decode!"
"WoofWoof!" → "a"
"Shhhhwoof!" → "a"
"Woofshhh! Shhh!" → "a"
"Wofowof!" → "a"
"khkhkhWbzzzzobzzzOghrrrrfseswsw!" → "a"
Я, как полный новичок, думал над этим 3 дня. Трое суток, чёрт возьми. Сложность там на уровне 6 (самое сложное 1, самое лёгкое 8)
То есть, задачка для совсем новичков. Моё решение составило в районе 100 строк, а решение от нормальных людей там в 3 строки.
Собственно, прошу ребят шарящих объяснить, как коротко решить эту задачку. Желательно, код с разъяснениями действий. Хочу словить минусов и разъяснений в решении. Это того стоит.
Хотя бы пойму, как люди это в 3-4 строки решают...Нажмите, чтобы раскрыть...если ты решил кодварс кату - ты можешь посмотреть самые популярные и оригинальные решения других людей
Данил Низамов сказал(а):↑Ну если пришлешь код в каком-то виде, в котором его можно прочесть (а этот мне даже автоформаттер в IDE не правит), то могу написать, что не так
Нажмите, чтобы раскрыть...
VovkaKalibrovka сказал(а):↑плевать что код большой если ты только начинаешь
идея вообще правильная, сначала отфильтровать строку от лишних символов (не 'w' 'o' 'f' '-' '!') но твой код не учитывает что если woof- 27 раз идёт то должно вернуть just barking а он вернёт 123 символ в ASCII таблице (это будет "{" )Нажмите, чтобы раскрыть...Это решение работает просто после выполнения "Kata" дают посмотреть как другие его сделали. И там 3 строки. Вот такие:
function woofDecoder(s) {
const ms = s.toLowerCase().match(/w[^!-]*?o[^!-]*?o[^!-]*?f[^!-]*?[-!]/g) || []
const arr = ms.join('').split('!').map(s=>s&&s.split('-').length)
return arr.some(n=>n>26) ? "just barking!"
: arr.map(w=> w && String.fromCharCode(w+96) ).join('') || 'nothing to decode!'И тяжело разобраться
Ник пользователя сказал(а):↑Это решение работает просто после выполнения "Kata" дают посмотреть как другие его сделали. И там 3 строки. Вот такие:
function woofDecoder(s) {
const ms = s.toLowerCase().match(/w[^!-]*?o[^!-]*?o[^!-]*?f[^!-]*?[-!]/g) || []
const arr = ms.join('').split('!').map(s=>s&&s.split('-').length)
return arr.some(n=>n>26) ? "just barking!"
: arr.map(w=> w && String.fromCharCode(w+96) ).join('') || 'nothing to decode!'
И тяжело разобраться
Нажмите, чтобы раскрыть...тут регулярное выражение, тебе еще рано такое
Ник пользователя сказал(а):↑Это решение работает просто после выполнения "Kata" дают посмотреть как другие его сделали. И там 3 строки. Вот такие:
function woofDecoder(s) {
const ms = s.toLowerCase().match(/w[^!-]*?o[^!-]*?o[^!-]*?f[^!-]*?[-!]/g) || []
const arr = ms.join('').split('!').map(s=>s&&s.split('-').length)
return arr.some(n=>n>26) ? "just barking!"
: arr.map(w=> w && String.fromCharCode(w+96) ).join('') || 'nothing to decode!'Нажмите, чтобы раскрыть...Ну ты можешь полистать вниз и там будут более простые решения
Это решение новичок не напишет, конечно, тут надо знать регулярки и как работают функции map() и лямбда выражения, к которым обычно приходят уже имея какой-то опыт в программировании
Да и в целом я не советую лезть в это, пока не будешь уверенно решать такие задачи просто с циклами. Когда будешь супер уверенно себя чувствовать, решая через циклы, можно учить способы их не использоватьНик пользователя сказал(а):↑Мой код вот:
Нажмите, чтобы раскрыть...Ну у тебя в решении самый кринж начинается, когда ты вводишь три счетчика для подсчета букв w, o и f. В целом классно, что ты смог это заставить работать, но здесь явно напрашивается просто использовать метод count, который посчитает количество woof в строке. Ты ведь уже очистил строку от всего лишнего и оставил там только 'w', 'o', 'f', '-' и '!'. Дальше можно сделать count('woof-') (только не забыть, что последнее слово так не посчитается, потому что у него нет '-') и получить количество woof
Ну, я так и сделал в своем решении на питоне выше. В остальном вроде у тебя норм
Данил Низамов сказал(а):↑Ну ты можешь полистать вниз и там будут более простые решения
Это решение новичок не напишет, конечно, тут надо знать регулярки и как работают функции map() и лямбда выражения, к которым обычно приходят уже имея какой-то опыт в программировании
Да и в целом я не советую лезть в это, пока не будешь уверенно решать такие задачи просто с циклами. Когда будешь супер уверенно себя чувствовать, решая через циклы, можно учить способы их не использовать
Ну у тебя в решении самый кринж начинается, когда ты вводишь три счетчика для подсчета букв w, o и f. В целом классно, что ты смог это заставить работать, но здесь явно напрашивается просто использовать метод count, который посчитает количество woof в строке. Ты ведь уже очистил строку от всего лишнего и оставил там только 'w', 'o', 'f', '-' и '!'. Дальше можно сделать count('woof-') (только не забыть, что последнее слово так не посчитается, потому что у него нет '-') и получить количество woof
Ну, я так и сделал в своем решении на питоне выше. В остальном вроде у тебя нормНажмите, чтобы раскрыть...Всё там просчиталось в моём огромном коде :D
Я предусмотрел, что последнее ""woof" считается ))
Там всё считается))) Просто слишком большой код
Ник пользователя сказал(а):↑Всё там просчиталось в моём огромном коде :D
Я предусмотрел, что последнее ""woolf" считается ))
Там всё считается))) Просто слишком большой кодНажмите, чтобы раскрыть...Не, я понял, что у тебя все считается
я говорю, что вводить счётчики и считать отдельно буквы здесь не нужно. Нужно использовать функцию count, она именно для этого и создана
Тут просто сплиты по ! и потом каждый элемент по -. Ну и еще надо чекать, что за границы алфавита не выходит, как в пункте с just barking. Плюс надо детектить, что в каждом элементе есть woof, как в примере с nothing to decode, можно просто функцией если боишься регулярок.
Данил Низамов сказал(а):↑Не, я понял, что у тебя все считается
я говорю, что вводить счётчики и считать отдельно буквы здесь не нужно. Нужно использовать функцию count, она именно для этого и создана
Нажмите, чтобы раскрыть...Я не просто
Как посчитать?
Я хз столько шарил и не нашёл способа
Я бы не создавал тему если бы загуглил и "Вот оно"
Ник пользователя сказал(а):↑Заранее извиняюсь перед богами программирования в первую очередь. Я совсем новичок и вот такое "Kata" встретил:
Justin has an exceptionally smart dog. In the latest show of its unparalleled intelligence, the dog learned to communicate human words. To do that, it woofs the exact number of times it takes to get to the right letter in the English alphabet. For example, if the dog is interested in the letter "A", it woofs just one time, if it's "B", it woofs two times and so on. Justin is amazed by his pet, but he also finds it challenging to translate the woofs in his head. Write a decoder for him that takes a string of hyphen-separated woofs and returns their human-language representation
Things to keep in mind:
Each valid woof sequence stands for one letter. All of them are guaranteed to end with an exclamation point. A space, on the other hand, is not guaranteed to follow
Justin's audio recorder is not a very good one. Sometimes, it inserts some random sounds that should be ignored. With that in mind, a woof is any sequence of letters that has a "w", an "o", another "o", and an "f" – in that order but not necessarily consecutively and irrespective of the case. If a string has no valid woof sequences, the method should return "nothing to decode!"
Albeit a smart one, Justin's dog is still a dog. Sometimes, it just wants to bark! If the number of woofs in any woof sequence exceeds the number of letters in the English alphabet, you should return "just barking!"
Justin's dog has not yet learned the concept of spaces. The strings may represent more than one human word, but the returned string should not contain any white space characters
While input strings may contain letters of either case, the returned strings should be always in lower case
Examples:
"Woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "hi"
"Woof-woof-woof-woof-woof-woof!Woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof! Woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof!" → "feedme"
"Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "just barking!"
"Shhhh!" → "nothing to decode!"
"WoofWoof!" → "a"
"Shhhhwoof!" → "a"
"Woofshhh! Shhh!" → "a"
"Wofowof!" → "a"
"khkhkhWbzzzzobzzzOghrrrrfseswsw!" → "a"
Я, как полный новичок, думал над этим 3 дня. Трое суток, чёрт возьми. Сложность там на уровне 6 (самое сложное 1, самое лёгкое 8)
То есть, задачка для совсем новичков. Моё решение составило в районе 100 строк, а решение от нормальных людей там в 3 строки.
Собственно, прошу ребят шарящих объяснить, как коротко решить эту задачку. Желательно, код с разъяснениями действий. Хочу словить минусов и разъяснений в решении. Это того стоит.
Хотя бы пойму, как люди это в 3-4 строки решают...Нажмите, чтобы раскрыть...
Если ты это решил в 100 строк вместо того чтобы нажать альт+ф4 то твоему усидчивостью и желанию вкатиться только можно позавидовать! Продолжай в том же духе.
Ник пользователя сказал(а):↑Я не просто
Как посчитать?
Я хз столько шарил и не нашёл способа
Я бы не создавал тему если бы загуглил и "Вот оно"Нажмите, чтобы раскрыть...В js реально походу нет для этого метода, кек. Кринж. Ну вот, можно по этому найду: https://www.w3resource.com/javascript-exercises/javascript-string-exercise-18.php
Я бы сделал так
let str = "Woof-woof-woof-woof-woof-woof!Woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof! Woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof"
//алфавит
let alph = 'abcdefghijklmnopqrstuvwxyz'
//преобразуем строку в массив, состоящий из строк до знака "!"
let arr = str.toLowerCase().split("!"),
res = ''
//проходимся по массиву строк, подсчитываем количество совпадений с woof, передаем это количество в массив с алфавитом
for (let i = 0; i < arr.length; i++){
res += alph&arr&i].match(/woof/g).length-1]}
console.log(res)
Ник пользователя сказал(а):↑Заранее извиняюсь перед богами программирования в первую очередь. Я совсем новичок и вот такое "Kata" встретил:
Justin has an exceptionally smart dog. In the latest show of its unparalleled intelligence, the dog learned to communicate human words. To do that, it woofs the exact number of times it takes to get to the right letter in the English alphabet. For example, if the dog is interested in the letter "A", it woofs just one time, if it's "B", it woofs two times and so on. Justin is amazed by his pet, but he also finds it challenging to translate the woofs in his head. Write a decoder for him that takes a string of hyphen-separated woofs and returns their human-language representation
Things to keep in mind:
Each valid woof sequence stands for one letter. All of them are guaranteed to end with an exclamation point. A space, on the other hand, is not guaranteed to follow
Justin's audio recorder is not a very good one. Sometimes, it inserts some random sounds that should be ignored. With that in mind, a woof is any sequence of letters that has a "w", an "o", another "o", and an "f" – in that order but not necessarily consecutively and irrespective of the case. If a string has no valid woof sequences, the method should return "nothing to decode!"
Albeit a smart one, Justin's dog is still a dog. Sometimes, it just wants to bark! If the number of woofs in any woof sequence exceeds the number of letters in the English alphabet, you should return "just barking!"
Justin's dog has not yet learned the concept of spaces. The strings may represent more than one human word, but the returned string should not contain any white space characters
While input strings may contain letters of either case, the returned strings should be always in lower case
Examples:
"Woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "hi"
"Woof-woof-woof-woof-woof-woof!Woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof! Woof-woof-woof-woof! Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof! Woof-woof-woof-woof-woof!" → "feedme"
"Woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof-woof!" → "just barking!"
"Shhhh!" → "nothing to decode!"
"WoofWoof!" → "a"
"Shhhhwoof!" → "a"
"Woofshhh! Shhh!" → "a"
"Wofowof!" → "a"
"khkhkhWbzzzzobzzzOghrrrrfseswsw!" → "a"
Я, как полный новичок, думал над этим 3 дня. Трое суток, чёрт возьми. Сложность там на уровне 6 (самое сложное 1, самое лёгкое 8)
То есть, задачка для совсем новичков. Моё решение составило в районе 100 строк, а решение от нормальных людей там в 3 строки.
Собственно, прошу ребят шарящих объяснить, как коротко решить эту задачку. Желательно, код с разъяснениями действий. Хочу словить минусов и разъяснений в решении. Это того стоит.
Хотя бы пойму, как люди это в 3-4 строки решают...Нажмите, чтобы раскрыть...
Советую спецом не лезть в такие дебри, с обучением и практикой всё это придёт.
Лучше знать границы и возможности своего языка а это можно узнать только с хорошей теорией и сильной практикой те же регулярки это сперва кажется сложным.
Тема закрыта
-
ЗаголовокОтветов ПросмотровПоследнее сообщение
-
Сообщений:4
Просмотров:6
-
Сообщений:1
Просмотров:3
-
внук берии 21 Dec 2024 в 14:31Сообщений: 2 21 Dec 2024 в 14:31
Сообщений:2
Просмотров:8
-
Сообщений:2
Просмотров:5
-
Сообщений:9
Просмотров:19