Профил
Loading...
+ Нов въпрос
nakov avatar nakov SoftUni Team Trainer 5459 Точки

[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 1087 Точки

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

function solve(args) {

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


    return result;

}

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

console.log(solve(input));

0
XmUrF avatar XmUrF 362 Точки

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

0
Matrix avatar Matrix 1087 Точки

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

0
XmUrF avatar XmUrF 362 Точки

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

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

Добре де, някой пробва ли се да реши задачата "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 5459 Точки
Може и да не парсваш входа към число, защото в JS това става автоматично, обаче трябва да сравняваш с == вместо с ===.
1
nakov avatar nakov SoftUni Team Trainer 5459 Точки
На изпита няма да се изисква използване на външни библиотеки. Ще е нещо подобно на Java Basics изпита. Целта е да се научите да пишете на JS, да се справяте със синтаксиса, да работите с масиви, стрингове и функции.
3
teodor.dobrev.90 avatar teodor.dobrev.90 19 Точки

Здравйте имам проблем при вкарването на кода в 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 41 Точки

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

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 95 Точки

Относно третата, задача със същото име е давана на изпит в Телерик, по С# част 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 142 Точки

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

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