Strange Order

Здравейте, опитах два варианта на тази задача, но ми дава invalid result.

Strange Order

Write a program that orders a list of numbers in the following way:

  • 3,-2,1,0,-1,0,-2,1-2,-1,-2,0,0,3,1,1

You need to find out the criteria for yourself by looking at the example. You can also check the example below.

Input

  • On the only line of input, you will receive the numbers, separated by a comma.

Output

  • Display the list with the mysterious ordering applied removed, separated by a comma.

Constraints

  • 1 <= list.length <= 20

Input

3,-12,0,0,13,5,1,0,-2

Output

-12,-2,0,0,0,3,13,5,1

Input

0,1,-1

Output

-1,0,1

import java.util.Scanner;public class Strange_Order { public static voi - Pastebin.com - решение 2
import java.util.Scanner;public class Strange_Order { public static v - Pastebin.com - решение 1

Ще съм благодарен ! :smiley:

Помисли си как трябва да се подреди (сортира) този лист “3,13,5,1” в output-a ти.

Тук въпросът е по-скоро да разпознаеш патърна, по който се движат числата.

Като гледам, всички отрицателни числа отиват отзад, но в същия ред 1 спрямо друго, както са в оригиналния масив.
Нулите са след отрицателните. После са положителните, които не са 1,отново в същата подредба 1 спрямо друго.
Накрая идват единиците.

Едит: даже може единиците да не са накрая а да е случайно така в примерите.

1 Like

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

Точно, така е в аутпута ти, а не трябва. Трябва да разпознаеш каква логика следват числата в примера и съответно защо 3,13,5,1 вдясно от нулата не е верния отговор.

Числата запазват подредбата си,единственото,което се променя е местоположението им спрямо 0.Отрицателните отиват отляво,положителните респективно отдясно на нулата.

Задачата се решава с 1 цикъл в 3 условни конструкции и лист/арей където се подреждат числата.

1 Like

Ето едно решение:

1 Like

Мерси за решението ! Все още не съм учил как се използа арей лист, но ще го разцъкам с дебъгера. :smiley:

1 Like

Примерен вариянт за решение.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> number = new ArrayList<>(List.of(3, -2, 1, 0, -2, 1));
        Collections.sort(number);
        
        for (int num: number) {
            System.out.print(num + " ");
        }
    }
}

Output: -2 -2 0 1 1 3 

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

В задачата няма сортиране. Редът се запазва, както е зададен по условие.