Професионална програма
Loading...
abetterman avatar abetterman 21 Точки

Две! грешки в условието на задача 3.Take/Skip Rope от More Exercises: Lists

Часове ми бяха необходими, докато намеря грешките!

1ва Грешка в изречението " Afterwards, iterate over both of the lists and skip {skipCount} characters from the non-numbers list, then take {takeCount} characters and store it in a result string. "  
Обратното е. take {takeCount} characters and store it in a result string, then skip {skipCount} characters from the non-numbers list
То така е показано и в примерите по-долу, че първо вземаме символи и тогава skip-ваме.

2ра Грешка. В главния пример на задачата има стринг "skipTest_String044170" . Предпоследния символ трябва да е шест, а не седем.

Трябва да е skipTest_String044160 , защото думата String има 6 символа, а не 7.

 

Тагове:
0
Fundamentals Module
mitkomik avatar mitkomik 13 Точки
Може и без метода, но бях тръгнал в друга посока и впоследствие ме домързя да го махна:)
Така я видях аз тази задача. 100/100 Judge.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class TakeSkipRope14_01_03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        List<Character> numbers = new ArrayList<>();
        List<Character> characters = new ArrayList<>();
        for (int i = 0; i < input.length(); i++) {

            if (input.charAt(i) >= 48 && input.charAt(i) <= 57) {
                numbers.add(input.charAt(i));
            } else {
                characters.add(input.charAt(i));
            }
        }
        List<Integer> takeList = new ArrayList<>();
        List<Integer> skipList = new ArrayList<>();
        for (int i = 0; i < numbers.size(); i++) {
            int numToAdd = Character.getNumericValue(numbers.get(i));
            if (i % 2 == 0) {
                takeList.add(numToAdd);
            } else {
                skipList.add(numToAdd);
            }
        }
        String string = characters.toString()
                .substring(1, 3 * characters.size() - 1)
                .replaceAll(", ", "");

        takePartsOfString(string, takeList, skipList);

    }

    private static void takePartsOfString(String string, List<Integer> takeList, List<Integer> skipList) {
        StringBuilder newString = new StringBuilder();
        for (int i = 0; i < takeList.size(); i++) {
            int take = takeList.get(i);
            for (int j = 0; j < take; j++) {
                if (string.length() == 0) {
                    break;
                }
                newString.append(string.charAt(0));
                string = string.substring(1);
            }

            for (int j = 0; j < skipList.get(i); j++) {

                if (string.length() == 0) {
                    break;
                }
                string = string.substring(1);
            }
        }
        System.out.println(newString);
    }
}
0
JsDSU avatar JsDSU 3 Точки

Качвам едно решение за Java ---> https://pastebin.com/Vv2Qbznp без substring.

Считам, че така е много по-лесно за разбиране кога се премахват елементите и кога се добавят. Написано по този начин отговаря на текущите лекции с използване на методи и листи, което би следвало да е идеята за упражнение на получените познания.

 Успех!

0
03/03/2021 13:16:27
Julianh12 avatar Julianh12 2 Точки

Ето едно елементарно решение,написано е на Python,но ще се ориентирате.

string_name=input()

number_list=[]
string_list=[]
take_list=[]
skip_list=[]
for i in range(len(string_name)):
    if string_name[i].isdigit():
        number_list.append(int(string_name[i]))
    else:
        string_list.append(string_name[i])

for x in range(len(number_list)):
    if x % 2==0:
        take_list.append(number_list[x])
    else:
        skip_list.append(number_list[x])

take_number=0
skip_number=0

index=0
new_string=""

for i in range(len(take_list)):
    take_number=take_list[i]
    skip_number=skip_list[i]
    new_string+="".join(string_list[:take_number])
    del string_list[0:take_number+skip_number]

print(new_string)
0
BasilioCristov avatar BasilioCristov 0 Точки

Много добро решение, простичко, но ефективно.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.