Mock Exam 4: Greater Number: Constraints

Здравейте @Team,
първо да кажа, че винаги съм се стремял да бъда честен с хората и като се хвана да правя нещо, наистина да го правя с внимание и старание. Това обаче, все повече се убеждавам, не ми помага да решавам поставените проблеми. Дори напротив. И днес вече спрях да бъда честен и ще ви разкажа защо и как се случи. Оказа се, че и вие не играете честно и по-надолу ще разберете какво имам предвид.

От няколко дни се опитвам да реша тази задача от Mock Exam 4, задача №2:


И каквото и да опитам все еднакъв резултат:

Capture2
И се чудя какво не му е наред на този код.

import java.util.Scanner;

public class MockExam4_2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] input1 = scanner.nextLine().split(",");
        String[] input2 = scanner.nextLine().split(",");
        int[] subSet = new int[input1.length];
        int[] fullSet = new int[input2.length];

        for (int i = 0; i < input1.length; i++) {
            subSet[i] = Integer.parseInt(input1[i]);
        }

        for (int i = 0; i < input2.length; i++) {
            fullSet[i] = Integer.parseInt(input2[i]);
        }

        int[] newSet = new int[subSet.length];
        for (int i = 0; i < subSet.length; i++) {
            for (int j = 0; j < fullSet.length; j++) {
                if (subSet[i] != fullSet[j]) {
                    continue;
                }

                newSet[i] = -1;
                for (int k = j + 1; k < fullSet.length; k++) {
                    if (fullSet[j] > fullSet[k]) {
                        continue;
                    }
                    newSet[i] = fullSet[k];
                    break;
                }
                break;
            }
        }

        for (int i = 0; i < newSet.length; i++) {
            System.out.print(newSet[i]);
            if (i < newSet.length-1) {
                System.out.print(",");
            }
        }
    }
}

И да ви кажа, днеска най-сетне разбрах. Отговора е: Нищо! Всичко му е наред.
Вече няколко пъти се сблъсквам с неправилно формулирани условия на задачи, които иначе се решават лесно, само че ако условието ти е поставено ясно и точно. Вероятно така ще се работи и на практика. Трябва да направиш нещо, правиш го, после казват, че това не работи, защото ти си трябвало да направиш нещо, което те са искали да ти кажат. Пък и ти си бил длъжен да знаеш, какво те са искали да ти кажат.

Може ли някой да каже как разбира маркираното в Constraints изречение? Аз разбирам че във всеки масив, всички елементи са уникални, т.е. не се повтарят или просто няма два еднакви. Кой сложи това условие и направи точно обратното? Не вярвам че е направено умишлено. Следователно не моето решение е грешно, а оценяването е грешно. Но няма значение оценката. Принципа е важен. Много държа на принципите и все заради това страдам.

Три дни отделих на тази задача и какво ли не пробвах. Пробвах с long, защото допусках че може да има такова число с 18 цифри. Бях започнал да работя върху вариант при който, числата от масива може и да са с над 18 цифри. И в крайна сметка вече реших да играя грубо и реших да разчепкам малко Judge и да го попитам с какви данни тества кода ми. Чрез подвеждане го накарах да ми връща на отделни части информация за входните данни и така постепенно извлякох цялата информация и какво се оказа:

първи масив с 14 елемента:

11198,11197,2020,2021,2222,2223,44444,4343,4344,10000000,100000000,999999,1000,999

втори масив с 33 елемента:

100000000,4344,11198,11197,2,1,1,2,3,5,4,7,6,8,9,99,100,108,101,102,111,110,11198,2020,2021,2222,2223,44444,4343,10000000,999999,1000,999

Това е конкретно за Тест№13, входните данни с които Judge тества кода ми. В първия масив наистина числата са уникални, но във втория не са. И тъй като най-вътрешния цикъл търси докато числото ми е по-голямо от всяко следващо, аз съм с презумцията че няма да срещне друго еднакво число, но срещайки го, вече условието да е по-голямо не е вярно, цикъла приключва, връщайки грешна стойност и прехвърляйки изпълнението върху най-външния цикъл.

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

Много ви моля, наистина ако искате добри резултати, поставяйте си условията прецизно. Не е единствената задача в която има неточности в условието, но на този конкретен случай отделих прекалено много време, което време можех да използвам по-пълноценно, като да решавам още задачи или да чета нови неща. Благодаря че изчетохте всичко. Не съм ядосан, не съм разочарован, още по-мотивиран съм и смятам, че да си казваме нещата едно към едно е полезно и за двете страни. Аз се чувствам удовлетворен от това, че напълно изясних и изчистих въпроса. Бъдете здрави и усмихнати и ако смятате че съм бил прекалено нахален, приемете моите извинения :slight_smile:

5 Likes

Съгласен съм с колегата и смятам, че щом от нас се изисква да сме на определено ниво и да отделяме значително време, с което да покажем мотивация и целенасоченост се надяваме поне предоставената среда да е достатъчно тествана. Мисля, че всички оценяваме, че за момента всички тези услуги са безплатни, но те все пак не служат ли за пример какво ще се използва в Алфа Академията?

1 Like

Благодаря @IvayloStavrev, че ми спести времето за разгадаване на този тест! :slight_smile:

2 Likes

Мерси за съвета, ще го имам предвид :upside_down_face:

1 Like

Здравейте,

Благодаря, че писахте за проблемът. Въпросният test case е коригиран.

Успех,
Тодор

1 Like