https://pastebin.com/Nd8qHA1k
Здравейте, някой може ли да ми обясни защо на това решение judge не дава никакви точки?
Изпит по "Основи на програмирането" – 6 и 7 Април 2019
Задача 4. Кино ваучер
Любо е голям почитател на киното и редовно ходи на прожекции и участва в томболи, от които често печели ваучери за кино. Вашата задача е да напишете програма, която да изчислява колко покупки от киното може да си купи Любо със спечеленият ваучер. Ако името на покупката съдържа повече от 8 символа, то тя е билет за филм, а нейната цена представлява сумата на ASCII символите от първите ѝ два символа. Ако името на покупката съдържа 8 или по-малко символа, нейната цена е равна на стойността на първия ASCII символ в името. Любо въвежда името на покупките, които желае, докато не въведе "End" или не въведе покупка, чиято стойност е по-голяма от останалата сума на ваучера.
Вход
Първоначално се чете един ред:
- Стойността на ваучера – цяло число в интервала [1…100000]
След това до получаване на команда "End" или до изчерпването на ваучера, се чете по един ред:
- Покупката, която Любо е избрал – текст
Изход
Програмата приключва при въвеждане на команда "End" или при покупка чиято стойност е по-голяма от останалите пари от ваучера. На конзолата трябва да се напечатат три реда:
- "{брои закупени билети}"
- "{брой закупени други покупки}"
Примерен вход и изход
Вход
|
Изход
|
Обяснения
|
300
Captain Marvel
popcorn
Pepsi
|
1
1
|
Сумата на ваучера е 300
Дължината на името на първата покупка е 14 символа, 14 > 8 следователно е филм и цената се образува от първите два символа на текста:
'C'(67) и 'a'(97), цена: 67 + 97 = 164 <= 300, цената изпълнява условието да е по-ниска или равна от наличната сума и купуваме билета.
Остават: 300 – 164 = 136
Дължината на името на втората покупка е 7 символа, 7 <= 8 следователно това е продукт, чиято цена се получава от първият символ 'p'(112), цена: 112 <= 136, цената е по-ниска или равна от наличната сума и купуваме продукта.
Остават 136 – 112 = 24
Дължината на името на третата покупка е 5 символа, 5 <= 8 следователно това е продукт, чиято цена се получава от първият символ 'P'(80), цена: 80 > 24, цената е по-висока от останалата сума във ваучера, продукта не се купува и печатаме броя на покупките
|
1500
Avengers: Endgame
Bohemian Rhapsody
Deadpool 2
End
|
3
0
|
Сумата на ваучера е 1500
Дължината на името на първата покупка е 17 символа, 17 > 8 следователно е филм и цената се образува от първите два символа на текста:
'A'(65) и 'v'(118), цена: 65 + 118 = 183 <= 1500, цената е по-ниска или равна от наличната сума, следователно купуваме билета.
Остават: 1500 – 183 = 1317
Дължината на името на втората покупка е 17 символа, 17 > 8 следователно е филм и цената се образува от първите два символа на текста:
'B'(66) и 'o'(111), цена: 66 + 111 = 177 <= 1317, цената е по-ниска или равна от наличната сума и купуваме билета.
Остават: 1317 – 177 = 1140
Дължината на името на третата покупка е 10 символа, 10 > 8 следователно е филм и цената се образува от първите два символа на текста:
'D'(68) и 'e'(101), цена: 68 + 101 = 169 <= 1140, цената е по-ниска или равна от наличната сума и купуваме билета.
Остават: 1140 – 169 = 971
Получаваме команда End и печатаме броя на покупките
|
Thank you again, I would never think of that "let input = [...arguments]"
But why it's not working in VSC?
Uncaught TypeError: Cannot read property 'length' of undefined
I have changed your code to work with input.shift(), which takes each element of the array and doesn't need length or index.
Also make sure, with what input you are working with:
1: ['300', 'Captain Marvel', 'popcorn', 'Pepsi'], already comes in form of an array, does not need let input = [...arguments] and you should use function solve(input)
2: ('300', 'Captain Marvel', 'popcorn', 'Pepsi'), separate arguments not inside of an array (as is the case for this exercise), use function solve(...input) or let input = [...arguments] to create an array with the necessary elements. When using [...arguments], function solve() can remain empty.
Otherwise, your code version with length/index works this way:
Best,