Loading...
nakov avatar nakov SoftUni Team Trainer 5295 Точки

[Judge] JavaScript Basics - Как да работим в системата

Колеги, зачестиха въпросите как да се оправяме с Judge системата когато ползваме езика JavaScript. Системата работи така:

  • Трябва да дефинирате функция solve(args)
  • Подава ви входните данни в масива args ред по ред (по един стриг за всеки ред от входа)
  • Изходът трябва да го върнете като единична стойност или стринг с "\n" между редовете (не го печайтайте на конзолата)

Ето примерно решение на задачата "Problem 1 – Joro, the Football Player" от състезанието http://judge.softuni.bg/Contests/2/CSharp-Basics-Exam-10-April-2014-Morning:

Ето примерно решение на задачата "Problem 3 – Sunglasses" задачата от състезанието http://judge.softuni.bg/Contests/2/CSharp-Basics-Exam-10-April-2014-Morning:

Забележка: ако ползвате фунцкии, те трябва да са вложени във функцията solve().

Целият ви код трябва да е във функция solve(args), която връща като резултат string. Функцията може да се казва и по друг начин, например findLongestSubsequence(arr).

Функцията приема като вход масив от стрингове - по 1 елемент за всеки ред от входа. Например ако входните данни за 10 числа, по едно на ред, ще ви бъдат подадени като масив от 10 елемента: arr[0], arr[1], ... arr[9].

Трябва да върнете като резултат string или да логнете на конзолата изходните данни. Ако например се очаква да върнете 2 числа (да кажем 20 и 30), по едно на ред, може да върнете "20\n30".

33
JavaScript Fundamentals
Matrix avatar Matrix 1092 Точки

Т.е. нещо такова ли ? ?

function solve(args) {

// целия код по задачата се изсипва тук в solve функцията


    return result;

}

// инпут на входните данни
var input = [
'10',
'7',
'2'
];

console.log(solve(input));

0
XmUrF avatar XmUrF 363 Точки

Аз доколкото разбирам няма да трябва да се пише по конзолата. Функцията Solve ще връща някаква променлива, където ще е решението и това е.

0
Matrix avatar Matrix 1092 Точки

Да, правилно, console.log() изобщо не ни трябва в случая, само solve() е достатъчно....Въпросът ми е, така ли горе-долу е кода, който ни е необходим (подаваме на функцията аргумента или масива с аргументите), за да атакуваме Judgе-а

0
XmUrF avatar XmUrF 363 Точки

Реално целия ти код е във функцията Solve, като накрая тази функция връща return result; и си ти. Предполагам Judge-a си пуска един console.log(), вика функцията и сравнява резултата.

Тоест да, ти като вход ще имаш някакъв масив(или стринг, знам ли) с данните вътре.
1
coaster avatar coaster 412 Точки

Добре де, някой пробва ли се да реши задачата "02. Simple Loops (Tribonacci)" от CSharp-Basics-Sample-Exam-May-2014 с JavaScript? Май не чета входа правилно, защото в конзолата на браузъра всичко е точно, а в judge-а си получавам 0 / 100 като пич. Моля някой да помогне..

EDIT: Промених малко кода - var x = parseInt(args[0]) както и за останалите данни от input-а. Така се получават 50 / 100, като гърмят последните тестове. Извод - вероятно се получават много големи числа и идва друг въпрос - на изпита ще има ли задачи, изискващи използването на допълнителни библиотеки (например за big integers) и дали ще можем да ги ползваме някак?

<code>

3
HPetrov avatar HPetrov 822 Точки

Изключително много ме съмнява да има такива задачи. Това са задачи за съвсем начинаещи а ние вече минахме през 2 програмни курса (3 с този) и ще бъде просто загуба на време. Но в крайна сметка винаги можем да си напишем 1 функция, която ги смята на "ръка" ;)

-2
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Може и да не парсваш входа към число, защото в JS това става автоматично, обаче трябва да сравняваш с == вместо с ===.
1
nakov avatar nakov SoftUni Team Trainer 5295 Точки
На изпита няма да се изисква използване на външни библиотеки. Ще е нещо подобно на Java Basics изпита. Целта е да се научите да пишете на JS, да се справяте със синтаксиса, да работите с масиви, стрингове и функции.
3
teodor.dobrev.90 avatar teodor.dobrev.90 18 Точки

Здравйте имам проблем при вкарването на кода в Judge системата . Програмата работи , но в Judg-a ми дава 0/100 .

При нулевите тестове ми дава грешка : 

Резултатът от нулевите тестове не се включва към крайния резултат.

C:\Windows\TEMP\tmp6643.tmp:107
    var words = arr.split(/[\...



Ще се радвам ако някой ми помогне да реша проблема понеже забих на едно място. :)

Ето и решението на задачата :


линк


E
DIT : Оправих проблема с Judge системата ,само че ми изкарва 80/100 точки на първите две задачи. Ако някой има идеи да помогне ще съм благодарен :)

ЛИНК - зад.1
ЛИНК - зад.2





2
G.Burlakova avatar G.Burlakova 36 Точки

var inputAsString = args.join(''); - Опитай преди да сплитнеш входните данни да направиш това. И при мен имаше същата грешка и това помогна.

0
alexxdim94 avatar alexxdim94 33 Точки

А как точно оправи проблема?

1
sarfaa avatar sarfaa 17 Точки

Аз също получавам 80/100 на първата задача. Ще се радвам ако някой сподели решенията.

 

Edit: Открих си грешката като погледнах тестовете от тук 

Мачвал съм W+, а е трябвало да изключим и цифрите.

var words = arr.toString().split(/[^A-Za-z]+/g);

1
StanDimitroff avatar StanDimitroff 90 Точки

А откъде взехте условията на задачите от примерния контест в Judge? На мен никъде не ми излизат?!

0
AlexKondov avatar AlexKondov 91 Точки

Относно третата, задача със същото име е давана на изпит в Телерик, по С# част II.

LINK
0
arsoman avatar arsoman 419 Точки

Ще може ли да качите условията на примерните задачи в judge?

1
Ventsislav avatar Ventsislav 343 Точки

Качени са тук колега.

1
arsoman avatar arsoman 419 Точки

Благодаря много!

1
arsoman avatar arsoman 419 Точки

Все още обаче не виждам условията на точно задачите по JS! Може ли все пак да се качат в judge, както всички останали?

0
sportsman avatar sportsman 137 Точки

За тези, които се чудят как да работят с Judge системата съм направил кратко видео обяснение. Ето и линк към темата:

https://softuni.bg/forum/questions/details/1644

3
nikolay.dimov83 avatar nikolay.dimov83 143 Точки

Иска ми юзър и парола - с моите не става

0
DNNdrago avatar DNNdrago 145 Точки

student

student

Това са юзър-ът и паролата.

0
externo avatar externo 119 Точки

какъвто и код да напиша(включително и решенията на колегите) ми дава - грешка при компилация, в мен ли е проблема или и при другите е така?

0
bsdemon avatar bsdemon 348 Точки

Входа трябва да го приемаш като масив с 1 елемент. input[0];

0
externo avatar externo 119 Точки

така и правя, още повече не приема решенията и на колегите както отбелязах в предния пост

0
design.angelova avatar design.angelova 69 Точки

Избираш ли JavaScript(Node JS) преди да изпратиш решението?

 

1
techmaniac avatar techmaniac 133 Точки

http://pastebin.com/T0mBus1Z , къде греша , че ми дава NAN ?! (махнал съм функцията solve най-доло в решението)

 

P.S

Ето друго решение което пействам в judge http://pastebin.com/psHXRA4U .. същата работа .. 

0
arsoman avatar arsoman 419 Точки

Моля за помощ! Тъкмо реших пробно тази задача от judge, при мен работи перфектно, но в системата ми дава следното:

Нулев тест №1 (Грешка по време на изпълнение)

Резултатът от нулевите тестове не се включва към крайния резултат.
C:\Windows\TEMP\tmp9F60.tmp:88
    var arrayOfNums = args.spl...
Използвано време: 0.036 s
Използвана памет: 11.63 MB

Нулев тест №2 (Грешка по време на изпълнение)

Резултатът от нулевите тестове не се включва към крайния резултат.
C:\Windows\TEMP\tmp9F60.tmp:88
    var arrayOfNums = args.spl...
Използвано време: 0.035 s
Използвана памет: 11.64 MB

Доколкото разбирам, проблема е във функцията args.split(' ');! Не би ли следвало тази функция да си е нормална, и защо при мен работи, а в системата не? Моля за бърз отговор, изпита съвсем наближи и такива проблеми трябва да се изчистят! Благодаря!

0
borislavml avatar borislavml 368 Точки

Колега, според мен ти гърми защото сплитваш целия args, а не първия елемент в args, a именно args[0]. В случая инпута явно се подава по следния начин: Solve(['2 5 1 4 8 2']), и всички числа от поредицата всъщност са един стринг(първият елемент на масива args), и съответно ги достъпваш  с args[0].split(' ');

args.split(' ') ще работи в случай че всяко едно число в инпута е подадено като отделен стринг, а именно Solve(['2', '5', '1', '4', '8', '2']), съответно се явява отделен елемент на масива и за да ги вземеш си сплитваш целия масив. 

Според мен трябва много точно да ни опишат в задачите как точно се подава инпута, зашото иначе ше има големи галимации(като в слуач с тази задача -решаваш си я, но не можеш дасии вземеш входа заради "недоразумение"). Все пак тези задачи не са писани за JavaScript изпита, и смятам, че за изпита ще ни е обяснено достатъчно добре.

Също бих те посъветвал да си почиствап входа след сплит и да си парсваш числата( когато имаш такива в инпута разбира се) с тези две "вълшебни" функции, които колегите са споменали в тази и други теми.

var numbers = arr[0].split(' ').filter(function(n) {
return n !== '';
}).map(Number);

Функицята след filter, ти почиства whitespace-a, който може да се появи в масива(''), а с map() си парсваш числата.

Ето решение на задачата, като авторксото, и въпреки това гърми на два теста заради memory limit, което не виждам как би могло да бъде избегнато smile

4
arsoman avatar arsoman 419 Точки

Благодаря ти за точния и пълен отговор, наистина, като ги разгледам като масив и вътре елементи, всичко работи! Бях се стреснал от това! Успех!

0
Genchev avatar Genchev 23 Точки

Здравей  borislavml,

 

В твоя отговор е и решението на част от проблема ми.

Би ли могъл да погледнеш ей тоя код. Някъде бъркам, а не ми е ясно къде.

Благодаря!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.