18 / 69
May 2017

Może poczytaj sobie. Także to co wcześniej napisałem?

PS
Twoje wyjście [stdout - to czy ty wypisujesz na końcu linii spacje _ enter, czy nie] jest tu zupełnie bez znaczenia.

PS 2
Czy tego też nie widzisz: https://ideone.com/dg0Te318 <-- że twój program się na takich danych sypie? Przecież na "oko" wejście jest identyczne?

Przeczytałem doskonale to co wcześniej napisałeś i nie rozumiem dlaczego po liczbie muszę podawać jeszcze spacje, to jest bezsensu, nie ma takich informacji w zadaniu.

PS: widzę doskonale te spacje, tylko nie rozumiem po co je tam umieszczać?

W końcu

To trochę pytanie filozoficzne, możesz spytać autora, chociaż gdybyś trochę pomyślał, może sam znalazłbyś odpowiedz?

mniej więcej jak wyżej, nie będę się kłócił, czy to jest z sensem czy bez, chociaż ja widzę sens.

że tak spytam, no i co z tego?

Więc ja się spytam, po co używasz takiego języka, zamiast c/c++, w którym nie miałbyś z tym takich problemów?
Czemu używasz takiej dziwnej metody wczytywania liczb w swoim języku - nie masz tam innych. Nie pytaj bo ja nie znam twojego języka [programowania].

Więc może przeczytaj dokłądniej, to co znalazłeś? :wink:

PS
Wiem, co piszę, bo czasami coś piszę :wink:

PS 2
dokładniej

A czemu nie? :wink:

Czemu nie ma sensu? Jak wspominałem, w innych językach to żaden problem i może:

to był jednak zły wybór?

Dlaczego zły wybór? Ja tam sobie chwalę

Każdy język ma swoje wady i zalety. Wyrażenia LINQ w C# mają swoją moc.

Z perspektywy spoja C++ jest szybszy i bardziej popularny.
Z perspektywy rynku pracy wciąż króluje Java.

Jednak po 5 latach pracy z .NET muszę powiedzieć że Microsoft wciąż za wolno adaptuje się do dynamicznego rynku wytwarzania oprogramowania i praktycznie każdy ich produkt można zastąpić lepszym i zazwyczaj tańszym rozwiązaniem. Jednak tutaj nie czas i miejsce by o tym pisać.

Może:
Napisałem wcześniej, że: "Może....", ale to twój wybór, twoja decyzja ..[i twoja flustarcja, że coś nie ma sensu :wink:]

PS
Nie wiem, czy w twoim znalezisku, są podane najlepsze metody wczytywania i to co ja tam napisałem to tylko taka moja łatka, wymyślona, przy analogicznych problemach z wczytywaniem w innych językach, więc nie mam pojęcia, czy jest najlepsza. Czy naprawdę, nie ma[sz] innych, lepszych [np papierowych, książkowych, podręcznbikowych] źródeł nauki i wyszukiwania rozwiązań problemów w c# ? W necie, podpowiedzi, nie zawsze muszą być najlepsze, wynikające z chęci pomocy, i nie zawsze optymalne.

Nie wiem już kompletnie jak to zrobić, jak to wczytać, nie wiem i nie mam pojęcia. Dla tego zadania jest to moim zdaniem kompletnie nie istotne.
A polecasz jakieś dobre książki? Bo ze wszystkimi którymi się spotkałem to dużo gadania/teorii a mało przykładów z których można się czegokolwiek nauczyć.

Poczytaj [poszukaj] o metodzie Trim().

Niestety nie znam nic do nauki języka c#, ale nauka programowania to też niestety czytanie dużo teorii i nie tylko nauka języka programowania ale też nauka algorytmiki, matematyki, a nawet warto liznąć chociaż trochę j. angielskiego itd. Nauka na podstawie przykładów chyba nie jest najlepszą metodą nauki.

Ale do C#? Najfajniejsza jest "Rusz głową C#". Ale to książka o samym języku, nie znajdziesz w niej przykładów algorytmów bo C# nie jest do tego. Za to co rozdział piszę się projekt zazwyczaj jakiejś minigry lub prostego symulatora.
Przykłady algorytmów są oczywiście w "Algorytmice praktycznej" Stańczyka, ale tam jest C++ z użyciem makr.

Znam metodę Trim, próbowałem z nią we wczesnych fazach testu ale ją wywaliłem.
Mimo tego że teraz uwzględniłem ją "chyba dosyć dobrze" i mogę sobie dopisywać do mojego kodu tyle spacji, tabulatorów ile tylko zapragnę to... sędzia dalej nie zalicza mi tego zadania, o to kod:
https://ideone.com/Komf2X3
Nie mam pomysłu co jest jeszcze źle...

Kojarzę tą książkę "Rusz głową C#" ale jakoś bardzo się nie wczytywałem w nią. Bardziej szukałem opcji robienia zadań (tak jak na matmie) ale jak widzę to tutaj tylko jest taka możliwość. W C++ jest w prawdzie tego naprawdę mnóstwo, ale bardziej obecnie siedzę w C# więc na tym by mi najbardziej zależało.

Widziałem tą książkę, tak są przykłady ale tylko trochę. Myślę że tutaj zbiór tych zadań jest o niebo lepszy :slight_smile:

No cóż, podsumowując:

  1. Warto uczyć się różnych języków, a także języka[ów] publikowania w niektórych publikacjach, tzw pseudokodu.
  2. Jeżeli korzysta się z podpowiedzi na forum, to warto jednak uwzględniać i pokazywać w kolejnych kodach, że się wykorzystało te podpowiedzi, a w przeciwnym wypadku po co wstawiać kolejne? Po co podpowiadać?.
  3. Poczytaj sobie o sortowaniu leksykograficznym, jak na dzisiaj, mam już dosyć forum i twoich pytań o sens i bezsens.
  4. Naucz się lepiej testować i dobierać testy - test z zadania to minimalny test zerowy.

PS
AD 3
To tylko przypuszczenie, ja tego nie sprawdzałem.

1.Co do tego zadania ma pseudokod?

2.Przecież wstawiłem kod w którym wykorzystałem Twoją podpowiedź i mimo tego to nie pomogło.
Od paru postów nie pisze już o sensie/bezsensie zadania.

3.Inny sposób sortowania może sprawić że zadanie będzie "poprawne"? Nie przekroczyłem tutaj limitu czasowego więc myślę że rodzaj sortowania "chyba" nie ma tutaj znaczenia?

4.Testowałem różne kombinacje liczb i dla każdych testów program działał.

AD 1
Zupełnie nic.

AD 2

Więc w takim razie, czemu nie oczyściłeś, ze zbędnych śmieci swojego programu?

AD 3 i AD 4
prosty test:
1 11 111 2 22 222 3 33 333 itd
- uzupełnij o ilości testów i ilość danych w teście.

Z punktu widzenia SPOJa warte uwagi są C i C++ i pod te języki pomyślane są zadania (z nielicznymi wyjątkami jak BF). Oczywiście nikt nikomu nie broni używać np. Pythona, ale w wielu przypadkach jest to bardzo trudne a nawet niewykonalne ze względu na limity czasowe. Sam próbowałem kiedyś robić zadania w Bashu - podołałem aż jednemu i zrezygnowałem z tego chorego pomysłu :smiley:

Jeżeli ktoś chce nauczyć się języka to polecam inne metody niż SPOJa. Za najlepszą uważam realizowanie własnych projektów. Najprościej jest chyba zacząć od gier komputerowych - każdy wie jak powinny wyglądać Saper albo Pacman, zaś wymyślanie użytecznych aplikacji dla księgowych, bibliotekarzy i wojska to nieco większe wyzwanie :wink:

C# również nie polecam na SPOJu, ale oczywiście co kto lubi.

PS
Właśnie dowiedziałem się, że na SPOJu można pisać w assemblerze i Octave (czyli de facto Matlab został dodany do SPOJa). Asmy wszelakie rozumiem - w sumie to nawet ciekawe doświadczenie napisać bardziej złożony program w assemblerze. Niemniej podejrzewam, że będzie sporo problemów z uzyskaniem pomocy na forum i z wczytywaniem danych...

Osobom, które na SPOJu będą uczyły się Octave szczerze współczuję. Sortowanie liczb i analiza dostaw pizzy na obszarze Bitocji wykonana w Octave jest po prostu stratą czasu bo nie do tego służy ta technologia. Osoby, które zamiast prowadzić obliczenia numeryczne i ich wizualizacje (nie wiem... metoda Rungego-Kutty czwartego rzędu, równania Lotki-Volterry, modele SIR, metoda Hartree-Focka czy kultowy MES) będą trzaskały BFSy w rzeczywistości nie nauczą się Octave. Podobnie ma się sytuacja z Bashem, Perlem, a jak sądzę, również z Pythonem, Javą i C#.

Mówię to z perspektywy osoby, która z wykształcenia jest inżynierem technologii chemicznej, a lwią część kodzenia (C++) opanowała na SPOJu. Na pierwszej rozmowie o pracę (C++) dowiedziałem się, że z algorytmami jest u mnie ok, gorzej z C++ i ogólnie programowaniem, bo i po co komuś na SPOJu konstruktory kopiujące, dziedziczenie, metody wirtualne, listy inicjalizacyjne, programowanie zwinne, wzorce projektowe, asercje, obsługa wyjątków, SOLID czy szablony? Wiele z tych rzeczy można wprowadzić do rozwiązywania zadań, ale będzie to tak sztuczne, że nic się z tego nie wyniesie. Przykładowo SPOJ przyjmuje pojedyncze pliki, co przeczy podstawowym zasadom kodzenia obiektowego.

Słowem: zalecam pamiętać o wadach i zaletach języków oraz SPOJa, a w związku z tym dobrze dobierać język do danego zadania. Jednocześnie zaznaczam, że niniejszy wpis jest wyłącznie moją opinią wyrobioną na podstawie moich doświadczeń i mojej wiedzy. Jeżeli ktoś uważa, że programowanie poza SPOJem jest beee albo widzi inne zastosowania GNU Octave, zaś Python i SPOJ tworzą dla niego doskonałe połączenie to proszę bardzo :slight_smile: