Loading...
G.Borisov88 avatar G.Borisov88 13 Точки

Homework: Fold and sum

Здравейте!

Тествах задачата с примерите показани в презентацията и работи. При качване в judge ми дава грешка при изпълнение. Ето и решението ми: http://pastebin.com/5Hdp7Hzm . Някой имал ли е такъв проблем или ако решението ми не е коректно, какво пропускам?

 

Тагове:
0
Programming Basics 10/09/2016 10:47:02
Simeon.R avatar Simeon.R 198 Точки
Best Answer

Привет, 

Входът ще бъде стринг с разстояние между буквите. Например "4 3 -1 2 5 0 1 9 8 6 7 -2" т.е. judge няма да ти подаде колко ще е голям масива, а стринг. Ти ще трябва да го сплитнеш и направиш на масив. Пробвай с тази подсказка и ако имаш проблем след това пиши :) 

1
20/03/2016 14:12:48
G.Borisov88 avatar G.Borisov88 13 Точки

Благодаря за подсказаката, наистина помогна! Само ми е чудно защо в условието се казва "Read an array of 4*k integers"? Аз лично го разбирам че К следва да е променлива...

 

0
Simeon.R avatar Simeon.R 198 Точки

И аз се почудих в началото, но ми се поизясни като видях примерните входове. Хубавото е, че на изпита заданията ще са доста по-детайлни с примерни входове (може и коментари) и ограничения (броят елементи се дели на 4 и т.н.).

0
JivkoJelev avatar JivkoJelev 235 Точки

Да не правя отделна тема , искам да питам въпрос по същата задача и аз.Пиша на JavaScript ,реших я задачата (поне според мен).Пробвах със всички тестове ми изкарва верни резултати , но джъдж ми дава [NaN] и нищо общо с резултата.Някой ако е имал подобен проблем да пише. Ето го и кода.http://pastebin.com/PJa6Q56q

0
27/01/2017 22:28:06
djc_bg2015 avatar djc_bg2015 923 Точки

Как точно си подаваш данните за да работи коректно при теб?

Защото при примерен вход: 5 2 3 6 (първия нулев), програмата гърми с Unhandled Exception: System.FormatException: Input string was not in a correct format.

0
G.Borisov88 avatar G.Borisov88 13 Точки

Мислех че първо трябва да задам К и след това дължината на масива да е 4*к(за да е винаги четно число и съответно да се дели на 2 равни части), но явно съм сбъркал. Иначе прочитем всяко число от масива във for-цикъл(което явно пак е грешка). Всяко число го чета на нов ред  и ми дава същата грешка.

0
20/03/2016 14:08:16
karabinata avatar karabinata 6 Точки

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

1
G.Borisov88 avatar G.Borisov88 13 Точки

Inputa-a трябва да е стринг. После деленето и обръщането на частите от масива е сравнително лесно.

0
Ivanov.Ivan avatar Ivanov.Ivan Trainer 558 Точки

Здравей,

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

Пример:

int[] nums = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

Буквално това означава --> Конзола прочети ми един ред, изрежи ми го по празно място, вземи всеки един елемент, приложи му операция int.Parse и след това го направи на масив.

Така ще имаш готов масив с integer без предварително да знаеш големината .... Колкото числа ти се подадат на един ред, толкова ще има вътре.

1
G.Borisov88 avatar G.Borisov88 13 Точки

Така  и направих в карайан сметка :) 

0
gadjov avatar gadjov 115 Точки

Привет колеги, ето го моето решение http://pastebin.com/4q5uxCzE . Някой може ли да ми каже по-лесно обръщане на масивите,защото аз го измислих само с цикъл и допълнителен брояч. А и да попитам .reverse() само за отпечатване ли може да се използва или и в тази задача може и ако може бих се радвал ако някой обясни как cheeky

0
netherblood avatar netherblood 95 Точки

Здравей колега, вместо целия цикъл за обръщане можеш да използваш метода Array.Reverse(*името на твоя масив тука*), който директно ти обръща масива.

2
gadjov avatar gadjov 115 Точки

Благодаря! После ще я пререша така. 

0
07/04/2016 07:42:51
CvetanCankovVelikov avatar CvetanCankovVelikov 30 Точки

Здравей,ето ти и един елегантен начин как с lambda и LINQ да си решиш задачата : http://pastebin.com/PhLc7Tgu
Именно по този начин след 2 урока ще решавате същата задача(предполагам си от февруарската група).

4
borislav9212 avatar borislav9212 745 Точки

Някой знае ли всъщност какво е това :  var rowLeft = arr.Take(k).ToArray();. само с var тръгва. прогвах с int, double, string..... но не става. Изобщо не ги обичам тия  var , сег ад а се чуди човек какво е това.

 

0
09/05/2016 09:58:13
Raskolnikov avatar Raskolnikov 102 Точки

Това е масив.

0
borislav9212 avatar borislav9212 745 Точки

Ясно знам че е масив, но с какво да заменя var Пробвах и с int[] и със string[] ,ама не става,какво ли не пробвах

Ето го и целипт код.

 

0
09/05/2016 10:51:02
Raskolnikov avatar Raskolnikov 102 Точки

Ако не добавиш .ToArray() накрая, ти връща IEnumerable. Това е колекция, която може само да се обхожда.

Ако вместо var rowLeft = arr.Take(k).Reverse(), напишеш var rowLeft = arr.Take(k).Reverse().ToArray(), ще стане отпред да му сложиш int[]. В противен случай няма как, понеже ти връща просто IEnumerable, което е интерфейс.

Тук има повече информация: https://msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx

2
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Решение със списъци:
 

        List<int> nums = Console.ReadLine().Split().Select(int.Parse).ToList();
        List<int> nums1 = new List<int>();
        List<int> nums2 = new List<int>();
        List<int> sum = new List<int>();

        int k = nums.Count / 4;
        for (int num = k - 1; num >= 0; num--) nums1.Add(nums[num]);
        for (int num = k; num < 3 * k; num++) nums2.Add(nums[num]);
        for (int num = 4 * k - 1; num >= 3 * k; num--)  nums1.Add(nums[num]);
        for (int num = 0; num < 2*k; num++) sum.Add(nums1[num] + nums2[num]);

        Console.WriteLine(string.Join(" ", sum));

 

0
dakata avatar dakata 26 Точки

Колега, това е моето решение на задачата: http://pastebin.com/2gbJPf0z

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

0
HunteR avatar HunteR 0 Точки

Ето още едно кратко решение.

http://pastebin.com/L6AXHUTY

0
Xapuu avatar Xapuu 25 Точки

Някой ако може да даде жокер и на мен къде бъркам със събирането на масиви, защото ми изглежда правилно, но явно само така изглежда :D. Ето го и кода http://pastebin.com/Ec1sT7CH

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