10 / 34
Jul 2017

Witam!

Poczytałem troche odnośnie podpowiedzi jak rozwiązać to zadanie i zastosowałem to w swoim kodzie (przynajmniej tak mi sie wydaje) ,niestety sedzia nie akceptuje . Brak mi juz pomysłów na testy by dojsc do rozwiązania. O to kod http://ideone.com/imS3yX126 . Prosze o jakiej podpowiedzi.

to chyba niedokładnie czytałeś podpowiedzi, lub nie wszystkie, lub ich nie zrozumiałeś
a jednocześnie tak zagmatwanego programu na rozwiązanie tego (prostego przecież) zadania to jeszcze nie widziałem - duże osiągnięcie z twojej strony :slight_smile:

sprawdź wynik twojego programu dla danych:

1
2 5 0 7 6 10 3 4 8
10 8 6 3 4 5 2 7 0
3 7 4 8 2 0 6 10 5
4 2 10 6 3 8 5 0 7
8 6 3 5 0 7 10 2 4
5 0 7 4 10 2 8 3 6
7 10 5 0 8 3 4 6 2
0 4 2 10 5 6 7 8 3
6 3 8 2 7 4 0 5 10

Dzieki dzieki za pomoc jest AC, zmieniłem podejscie, za bardzo komplikowalem a to zadanie z serii Latwe.

skoro masz AC, to wysyłam ci (na priv oczywiście) link do mojego rozwiązania - popatrz o ile prościej można to zrobić

16 days later

Głowię się już parę godzin, czemu nie dostaję AC, może ktoś mógłby mi pomóc?
Tu był kod....

for (,,,,,,,,,,,)
for (...........){
...........
............
...........
break;
}

break --> przerywa tylko wewnętrzną pętlę.

PS
Teraz lub po AC powinieneś przemyśleć i uprościć [znacząco] swój kod.

20 days later

Nie mogę znaleźć błędu. poproszę o wskazówki
Zakładam że w wierszu muszą być różne liczby np 1,2,3,4,5,6,7,8,9 lub 10,11,12,13,14,15,16,17,18 i nie mogą się powtarzać liczby w kolumnach i w wierszach.
link http://ideone.com/bwiXKf71

Dzięki za podpowiedz. (zapomniałem że małe kwadraty też powinny być sprawdzane :frowning: . )

1 month later

Ktoś może pomoc? Dostaje WA, a wciaż błędu nie mogę znaleźć.
AC

a jakim cudem miałbyś dostać AC ? - skoro nie daje poprawnych odpowiedzi dla przykładowych danych podanych w zadaniu

1 year later

wygląda na to, że nie wiesz co to jest sudoku, bo niektóre odpowiedzi twojego programu na twoje przykłady są błędne

10 months later

Czołem,

Czy ktoś mógłby dać wskazówkę, dlaczego mój program nie przechodzi przez spoja.
Program sprawdza:
-występowanie liczb w kwadratach 3 x 3,

  • występowanie liczb w każdym rzędzie, kolumnie,
  • zlicza sumę liczb w każdym rzędzie.
  • sprawdza czy liczby są spoza zakresu 1-9.

Na przykładach z zadania działa i na powyższych tutaj wymienionych.
Nie wiem czy jest to kwestia jakiegoś głupiego błędu czy coś poważniejszego…
Link do programu:

Twój kod jest tak długi, a noc tak krótka, że nie podejmuję się jego analizy, ale kilka uwag:

Więc powinieneś to pokazać właśnie na ideone, wklejając do okienka stdin [wejście] wszystkie testowane przykłady.

Sprawdzanie sumy moim zdaniem nie jest dobre, np 9 x 5 = 45, a także dowolnie wiele różnych kombinacji 9 liczb jednocyfrowych spełnia ten warunek [== 45]

Używasz C++, to nie używaj narzędzi z C. [narzędzi i/o]

Twoje wczytywanie jest mówiąc oględnie dziwne i skomplikowane. Przecież można w tym zadaniu w prosty sposób np tak:

for (int i = 0; i < 9; ++i)
     for (int j = 0; j < 9; ++j)
           cin >> sudokuArray[i][j];

Jeżeli używasz do testowania funkcji printSudoku(), to bardzo dobrze, ale jeżeli chcesz pomocy i pokazujesz swój kod, to “odchódź” go maksymalnie. Oszczędzisz w ten sposób chcącym pomóc kawałek nocy i łatwiej znajdziesz chętnych do pomocy. Ja na razie wymiękam. Jeżeli twój kod schudnie to może wtedy :wink:

Na trzecim przykladzie z zadania program generuje NIE (a powinien TAK)

-tu byla napisana bzdura.-

  1. ja tez nie podejmuje sie dokladnej analizy :sweat_smile:

EDIT Przepraszam za wprowadzenie zamieszania

Mój pierwszy program AC, pierwszą rzeczą jaką sprawdzał, to czy wszystkie liczby w sudoku są z zakresu 1…9, i dla kogoś, kto grał-rozwiązywał sudoku, jest to oczywiste ale tu w zadaniu tak nie jest. Liczby są z zakresu -1000 … 1000

Dzisiaj, pomyślałem, że może nie trzeba sprawdzać wszystkiego i praktycznie przetestowałem to.

https://ideone.com/pt002p8 - tutaj widać, że działa dla wszystkich 5 przypadków.

Początkowo miałem samo sprawdzanie sumy, ale zdałem sobie sprawę, że to łatwo można “obejść” żeby wyszło 45.
Dlatego napisałem funkcję sprawdzającą występowanie liczb w każdej linii, a następnie kolejną sprawdzającą w kwadratach 3x3.
Napisałem warunek, że liczby spoza zakresu 1-9 zwrócą false, ponieważ takie liczby nie występują w Sudoku. Natomiast użytkownik może wprowadzać liczby ujemne i dodatnie, co jest powiedziane w treści zadania.
Wczytuje linia po linii po 9 cyfr. Bo tak jest pokazane w zadaniu, aby wprawdzać liczby oddzielone spacją. Stąd używam getline z tablicą string, którą później konwertuje na int. Robiłem już kiedyś podobne zabiegi przy zadaniach na spoju i to działało.

to nie jest chyba ostateczna wersja?

  1. Pobawilem się trochę programem i wrzuciłem przypadek testowy.

Gdy w przypadku testowym jest liczba z większą iloscia cyfr robi sie coś, dla mnie niezrozumialego, z tablica arr w funkcji convertStringToInt.

Nastepny przypadek testowy wykazuje NIE, a powinien TAK.

Dla obserwacji tablicy mozna odkomentować w tej funkcji 2 linijki (tą drugą dodałem dla przejrzystości)
Co tam sie dzieje? Moze lepiej nie sprawdzac i użyc propozycji @narbej :thinking: