Софтуерно Инженерство
Loading...
Nick1R1 avatar Nick1R1 115 Точки

Подготовка за изпита на 31.01 по JavaScript Basics и неразбирателство с Judge-а

 Здравейте, реших да пробвам една задача от предишния изпит и проучих как се правят инпутите за джъдж-а. И тъкмо си мислех, че съм ги разбрал докато джъдж-а нещо не ме хареса. Моля ви кажете ми дали решението на задачата Kitodar the Miner от последния изпит ми е проблемно или не съм направил така че да се приемат правилно инпутите.. http://pastebin.com/cPsFEt83

1
JavaScript Fundamentals
npaunov avatar npaunov 51 Точки

Да, решението трябва да се погледне. Правиш Split(), по space, което според мен не е удачно за тази задача, въпреки че в условието се казва "You may find one or more whitespaces as separator.", което подвежда.

Пробемът в случая е името на мината, което може да съдържа space, както и двуеточие, т.е. след като направиш Split, не можеш да предвидиш колко ще е дълъг, новополучения масив.

Единият вариант е да напишеш удачен Regex.

И другият е да направиш Split() по ":" и по "-", като трябва да си сигурен че винаги взимаш последните, заради името на мината, в което също може да се съдържат.
Ето моето решение, по втория вариант.

0
18/01/2016 14:35:17
Nick1R1 avatar Nick1R1 115 Точки

Хора, аз пак не мога да се оправя, идеята е че долу имам хардкоднат първия тест като коментари, като го сменя с втория тест си минава и втория. Махам коментарите и на конзолата е ок, закоментирам пак и  и джъджа не ми дава първи тест, че ми е ок. Иначе този проблем с разстоянията съм го решил с фунцкията clean(). На втория пример има повече от един спейс и тази функция го зачиства и си вади коректен аутпут, но пак казвам само на конзолатаа.. :(  

 

0
18/01/2016 16:01:36
malkstor avatar malkstor 348 Точки

Колега, опитай да пратиш кода като изтриеш коментираните редове преди това. Спомням си че за Java имаше някакви страннности с Judge и коментирани редове. Може и да са оправени, но за всеки случай.

1
Nick1R1 avatar Nick1R1 115 Точки

http://pastebin.com/sEZLCscq Ето работещо решение с първите два инпута, когате се хардкоуд-нат.. :)

0
npaunov avatar npaunov 51 Точки

Значи, Има разлика между теста в Judge  и примерния тест който е посочен в условието на задачата,

Първи тест в Judge:

[ 'mine bobovDol - gold : 10',
  'mine medenRudnik - silver : 22',
  'mine chernoMore - shrimps : 24',
  'gold:50' ]

Първи тест  в условието:

mine bobovDol - gold: 10"

mine medenRudnik - silver: 22"

mine chernoMore - shrimps : 24"

gold: 50

В judge между двуеточието има още един space, когато този тест, бъде пуснат на твоя код, програмата която си написал го разделя на 6 части.

line.length = 6

Ако пуснеш теста по условие програмата го разделя на 5 части (защото там има един space по-малко)

line.length = 5

Ти си предположил в твоя код че line.length винаги ще е равно на 5, ами не , не е, поне според тестовете на judge.

Трябва да смениш логика, на дължината на масива, защото няма да знаеш колко е дълъг, и ако е дълъг 5, то това ще е късмет :)

1
18/01/2016 16:50:08
LoKSET avatar LoKSET 160 Точки

Първоначално подцених задачата, понеже е първа и почнах със сравнително елементарно сплитване - брех, нищо не става. Мъчих се, въртях суках не и не - после с един изчерпателен регекс и всичко заспа - http://pastebin.com/Gk0zEfyK

Просто наистина няма смисъл да се решава по друг начин.

Между другото нещо аз ли не съм направил като хората или Джъджа не работи с ламбда изрази frown

0
26/01/2016 17:51:32