Quantcast
Channel: SPOJ Discussion board - Latest posts
Viewing all 22538 articles
Browse latest View live

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

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/Komf2X
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.


MWPZ06H - Konkurs pseudomatematyczny

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

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:

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

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.

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

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ł.

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

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.

Solution to TEST in C

$
0
0

Hi, this is the code I put for resolution for this problem, but every time SPOJ says Time Limit Exceeded:

#include
int main(int i)
{
while(scanf("%d",&i)>0 && printf("%d\n",i) && i != 42 );
return 0;
}

Could you please help me on this ?

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

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:


MWPZ06H - Konkurs pseudomatematyczny

$
0
0

Z punktu widzenia SPOJ'a nie ma gorszych czy lepszych języków. To problemsetterzy przygotowują zadania, testy, limity, a przecież powszechnie wiadomo jakiego my najczęściej używamy języka [prawie zawsze]. Więc jeżeli problemsetter postanowi, że zadanie/a można rozwiązać tylko w jednym [czy dwu ...] wybranych językach, to tak będzie i testy i limity będą dostosowane do rozwiązań "wzorcowych" w tym wybranym języku.

Nauka języka jest trudna, ale jeszcze trudniejsze jest nauczenie się prowadzenie konwersacji z komputerem w tym języku na ciekawe tematy. Owszem, można uczyć się języka korzystając ze SPOJ'a, ale lepiej znać już podstawy języka, a na SPOJ'u uczyć się algorytmiki a przy okazji utrwalać i szlifować znajomość języka.

Programowanie OBIEKTOWE

  1. Czy naprawdę, jednoplikowość kodu jest zaprzeczeniem programowania obiektowego?
  2. Czy na SPOJ'u używasz pojedyńczego pliku?
  3. SPOJ nie zabrania programowania obiektowego, i to tylko twoja sprawa, czy będzie to sztuczne i czy coś z tego wyniesiesz czy nie. Jeżeli chcesz uczyć się obiektowości, możesz spokojnie robić to na SPOJ'u i nawet jeżeli na początku twoje programy będą sztuczne, to napewno i tak z takich prób dużo wyniesiesz.
  4. Oczywiście SPOJ nie jest doskonały, ma wiele wad, ale przecież wiele też umożliwia i [ciągle] jest rozwijany i udoskonalany/poprawiany.

PS
Warto znać więcej niż tylko jeden język, a w tym skryptowe. Więc bash jest jak najbardziej ok [- chyba zrobiłem w nim więcej niż jedno zadanie, jako kolejne AC w "obcym" języku]

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

Zgoda.

Nie jestem problemsetterem, ale myślę, że problemsetter rzadko postanawia, iż zadanie można rozwiązać tylko w jednym czy dwóch językach. To raczej garstka problemów, np. tylko BF albo równie rzadko tylko C/C++ (nota bene właśnie po to, by ktoś nie próbował używać np. funkcji typu eval, dostępnej w Pythonie czy Javie (ScriptEngine i odwołanie się do eval w JavaScript). W praktyce zwyczajnie nikt nie zna wszystkich języków, a już na pewno nie chce mu się próbować rozwiązania w każdym istniejącym języku. Chociażby trudno zadbać o to by każde zadanie było rozwiązywalne w BF z taką łatwością jak w Pascalu, albo żeby limity czasowe zostały ustawione tak, że nieoptymalne rozwiązanie w C nie przejdzie, ale pojawi się możliwość rozwiązania zadania w Pythonie.

Po prostu wybierając C i C++ można rozwiązać na SPOJu więcej zadań niż wybierając inne języki, a dodatkowo jest to prostsze - dużo materiałów w sieci, pomoc na forum itd. C i C++ są także dopuszczane na różnych "oficjalnych" konkursach informatycznych, co wyróżnia je na tle prawie wszystkich innych języków. Np. na Olimpiadzie Informatycznej jak pamiętam dozwolone są tylko Pascal, C i C++. W tym sensie języki te są lepsze.

Pełna zgoda.

Już od kilkudziesięciu lat ludzie dzielą kod na pliki nawet nie stosując się do paradygmatu obiektowego. Kwestia czytelności itd. Jednoplikowość nie jest zaprzeczeniem, ale pewnym wypaczeniem a jeszcze ściślej - wyrabianiem złych nawyków. Bardzo złych nawyków. Dobrą zasadą jest podział na pliki w taki sposób, że mamy prawie pustego maina (na SPOJu rzadkość) i klasy podzielone na zasadzie jeden plik - jedna klasa.

Wklejam swój kod a więc tak.

Zgoda, ale to trochę jak klocki Lego jako nauka budownictwa. Można tak zacząć (sam tak zacząłem), ale na dłuższą metę to ślepa uliczka.

I tak już jest super :wink:

Warto, warto. Tylko czy "znać Basha" oznacza 500 AC na SPOJu zaklepanych w Bashu czy może np. umiejętność sprawnego posługiwania się terminalem, pisania skryptów służących np. do tworzenia kopii zapasowych itd? Siłą rzeczy Bash to niezbyt dobry wybór jeśli chodzi o algorytmy.

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

:wink: Czy za każdym razem, używając: #include<...> <-- coś tam z STL [lub boost, a możliwe, że są/będą dostępne i inne biblioteki?] nie korzystasz z więcej niż jednego pliku i jednocześnie czy twój program, nie jest już w pewnym sensie trochę obiektowy? :wink: [raczej pytam retorycznie]

Jeżeli naprwdę chcesz "liznąć" PO, możesz u siebie to robić i robić to tak jak lubisz, w wielu plikach, klasach, podklasach itd, a po skompilowaniu i przetestowaniu u siebie, możesz wysyłać taki kod, sklejając wcześniej odpowiednie pliki źródłowe w jeden - pewnie wystarczyłby do tego nawet bash, ale możesz sobie napisać też specjalny programik [obiektowo] w c++, automatycznie sklejający potrzebne pliki.

Jeżeli miałeś w ręku Algorytmikę praktyczną, to pewnie zauważyłeś, że większość kodu jest pisana tam z użyciem klas, struktur, template, więc może jednak można i warto?

PS
Powyższe piszę tylko teoretycznie, bo sam tak [jeszcze] nie robię. :wink:

Error when compiling PRIME1

$
0
0

hi guys, i wanna ask why i always get error when compiling prime1. I try at my netbeans but its works.

this is my codes
import java.util.*;
import java.lang.*;
import java.lang.Math;

public class Main {

public static void main(String[] args) throws java.lang.Exception {
    Scanner sc = new Scanner(System.in);
    int testCases = sc.nextInt();
    int ranges[][] = new int[testCases][2];
    for (int i = 0; i < testCases; i++) {
        ranges[i][0] = sc.nextInt();
        ranges[i][1] = sc.nextInt();
    }
    for (int i = 0; i < testCases; i++) {
        int m = ranges[i][0];
        int n = ranges[i][1];
        double sqrt = 0.0;
        int j = 0;
        for (int k = m; k <= n; k++) {
            if (k == 1) {
                continue;
            }
            if (k == 2) {
                System.out.println(k);
                continue;
            }
            if (k % 2 != 0) {
                sqrt = Math.sqrt(k);
                for (j = 3; j <= sqrt; j = j + 2) {
                    if (k % j == 0) {
                        break;
                    }
                }
                if (j > sqrt) {
                    System.out.println(k);
                }
            }
        }
        if (i < testCases - 1) {
            System.out.println();
        }
    }
    sc.close();
}

}

MWPZ06H - Konkurs pseudomatematyczny

$
0
0

Słusznie węszyłem haczyk w Twoim pytaniu :wink: Ale fakt - w tym sensie plików jest duużo więcej :wink:

Ło ma lamo, to byłby koszmar :wink:

Ależ ja (sporadycznie) również stosuję na SPOJu szablony, struktury a by nie pisać unsigned long long zbyt często - także define. Czasami takie podejście ułatwia sprawę bo jest mniej kodu do zaklepania. Tylko czy na SPOJu tego rodzaju twory stosuje się podobnie jak w rzeczywistych projektach programistycznych? :wink: Myślę, że podobieństwo dotyczy głównie słów kluczowych :wink:

WA in ETFS...!

663. Sort 1 [PP0506A]

$
0
0

Dla przykładowych testów z zadania program działa prawidłowo.

AC

Mimo to spoj wywala błąd. Nie jestem w stanie sam go znaleźć.

Edit: wystarczyło zmienić tryb danych na double


663. Sort 1 [PP0506A]

$
0
0

Policz na kalkulatorze te odległości, wyświetl sobie twoją tablicę 'wyniki' i porównaj te liczby. Popróbuj też z innymi testami.

355. Rysunki Bajtelka [BAJTELEK]

$
0
0

Witam,

Mam problem z tym zadaniem. Na początku zaznaczę, że program tworzę w C#. Testuje kod na ideone.com z wszystkimi zestawami danych, jakie udało mi się znaleźć. Wyniki wychodzą poprawne. Udało mi się dotrzeć do kodu z AC napisanego w C++. Jedyna różnica, to sposób pobierania danych. W C++ wykorzystywany jest cin, natomiast w C# pobieram całą linię z konsoli i dopiero później dzielę ją na elementy. Czy ktoś mógłby zerknąć na kod na ideone
http://ideone.com/IN7k73
i zasugerować ewentualną podpowiedź, albo wrzucić przykładowy zestaw testowy na podstawie którego będę mógł znaleźć błąd. Z góry dziękuję.

355. Rysunki Bajtelka [BAJTELEK]

$
0
0

Po każdym teście następuje pusta linia.

Gdzieś tutaj leży problem. W C++ po prostu wczytujemy liczby i ignorujemy białe znaki. W C# czytasz uczciwie linia po linii.

W załączonym programie masz zakomentowane wczytanie tej pustej linii przez co dla przypadku testowego liczy tylko pole pierwszego podanego obszaru, więc teoretycznie po odkomentowaniu tego powinno działać ok. Niestety wali gdzieś wtedy wyjątkiem (NZEC).

Żeby dużo nie modyfikować wejścia zrobiłem taki myk żeby ignorować puste linie jeśli takowe wystąpią i przeszło:

   // Prepare data for calculation area.
   inputData = Console.ReadLine().Split(new char[] { ' ', '\t' });
   while (inputData.Length == 0 || (inputData.Length == 1 && inputData[0] == ""))
   {
       inputData = Console.ReadLine().Split(new char[] { ' ', '\t' });
   }

Proste dodawanie c++

$
0
0
#include <iostream> 
#include <stdio.h> 

using namespace std;

int a, b, s;

int main()
{
	cin >> a;

	for (int i = 0; i < a; i++)
	{
		std::cin >> b;
		s += b;
	}

	return 0;
}

Nie mam pojęcia co mam dalej zrobić

355. Rysunki Bajtelka [BAJTELEK]

$
0
0

Co do pustej linii, to dlatego właśnie wczytywanie było zakomentowane, ponieważ sędzia zwracał NZEC. Myślałem, że coś źle się parsuje z wejścia i może po prostu w zadaniu jest błąd i nie wczytywałem tej linii. Wtedy zwracało błędna odpowiedź, więc poszedłem tym tropem. Wprowadziłem zmiany i faktycznie przeszło. Dziękuję bardzo !
Na koniec jeszcze krótkie pytanie odnośnie sprawdzania pustych linii.
inputData.Length == 0 to jest oczywiste,
ale skąd wymyśliłeś
inputData.Length == 1 && inputData[0] == ""
OK -> nie ma tematu. Sprawdziłem sobie co ląduje w zmiennej dla wczytania pustej linii i wszystko się zgadza. Jeszcze raz dzięki za podpowiedź.

Viewing all 22538 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>