[JS] Arrays - 2 зад.


8

Условието на задачата:

Write a script that that compares two char arrays lexicographically ( letter by letter).

Споделям решение : http://jsbin.com/amoxib/3/edit

Признавам си ,че за задачките от масиви отделям повечко време от всички други досега, понякога дори се замислям това което правя ли се иска, така че очаквам критиките ви :) и по-добрите решение да завалят :)

ЕДИТ Щеше да хубаво , ако и за javascript задачките имаше по ред, два упътвания , нали :) ( Поне като се почне със  C# тези дни ще знам вече какво значи да сравня два масива лексикографски )




Отговори



0

Здравейте, колеги!

Ето го и моето решение.

http://pastebin.com/iNfUmwqv

Искам да попитам според вас дали трябва да покажем, че лексикографски масив a,b,c e преди масив m,n,k (пример)?!

EDIT: втора версия

http://pastebin.com/P1JtQfyC

Поздрави!


от kalina_sf (192 точки)


0
Аз съм го направила да сравнява и самите букви: http://jsfiddle.net/em89/kEG33/3/

от elena89 (85 точки)


1

Здравейте, това е моето решение за задача 2

Задача 2

 

направил съм решение с булева променлива, която при сравняването на масивите буква по буква при еднаквост вдига флаг true, а ако се различиват в звисимост кой от двата масива е лексикогравски по-голям принтира съобщение и прекъсва цикъла с return. Първоначално правя проверка, дали дължината на някой от масивите не е по-голяма от другата.


от KaloyanBobev (330 точки)


2
http://jsfiddle.net/EH3z3/
За да решим тази задача първо нека уточним какво се има в предвид под лексикографско сравнение на чаровете в масивите. Ето какво пише в учебника "Въведение в програмирането" като разяснение към тази задача: "При лексикографската наредба символите се сравняват един по един като се започва от най-левия. При несъвпадащи символи по-рано е масивът, чийто текущ символ е по-рано в азбуката. При съвпадение се продължава със следващия символ вдясно. Ако се стигне до края на единия масив, по-краткият е лексикографски по-рано. Ако всички съответни символи от двата масива съвпаднат, то масивите са еднакви и никой о тях не е по-рано в лексикографската наредба." При C# тази задача си е бая занимавка, но тук в JavaScript решението я е много лесно тъй като, ако просто сравним "abc" == "abc" ще получим true. Ако сравним "abc" < "abc" или "abc" > "abc" получаваме false. Но ако сравним "abc" < "akl" ще получим true!!! Т.е. стринга "abc" лексикографски е по-напред/по-малък е от "akl". Или казано с други думи, JavaScript има способността автоматично да сравнява лексикографски чаровете.

от Matrix (2857 точки)