Професионална програма
Loading...
+ Нов въпрос
BGdaredevil avatar BGdaredevil 5 Точки

JS Fundamentals, 08. Array Manipulator

Здравейте,

По тази задача е изписано доста, но не намерих подобен проблем на моя:

ето две почти идентични решения (раликата е печатането на отговора в редове 63 до 66:

https://pastebin.com/YuFmGnwp

дава 100/100 в джъдж,

и оригиналната версия на кода -- ред 60:

https://pastebin.com/KM87LVzP

дава 54/100 в джъдж,

if-а на 8-10 ти ред няма влияние в/у резултата.

Ще съм благодарен ако някой може да ми разясни причината и как да я избегна.

1
JavaScript Fundamentals
MartinBG avatar MartinBG 3511 Точки

Интересен проблем! smiley

 

Демо код:

function demo() {
  console.log("[ " + [ 1, 8, 2, 4, 5, 6, 7 ].join(", ") + " ]");
  console.log([ 1, 8, 2, 4, 5, 6, 7 ]);
}

 

Изпълнена локално (Windows 7, Node.js 10.10.0), горната функция принтира:

[ 1, 8, 2, 4, 5, 6, 7 ]
[ 1, 8, 2, 4, 5, 6, 7 ]

 

В Judge, обаче, резултатът е:

[ 1, 8, 2, 4, 5, 6, 7 ]
[
  1, 8, 2, 4,
  5, 6, 7
]

 

Разликата между двата подхода е, че с join създаваме стринг във вида, в който трябва да бъде форматиран и по този начин си гарантираме, че ще се отпечата точно това, което искаме, независимо къде се изпълнява нашата програма.

При подаване на масива директно за отпечатване в конзолата нямаме този контрол и е възможно да се получи резултат, различен от очаквания, тъй като се използва форматиране по подразбиране, което може да е различно на различните платформи.

Правилният подход при писане на код е максимално да изолираме програмата от външни зависимости за да избегнем проблеми като горния.

0
30/11/2020 00:44:36