Robię to zadanie na SPOJ, na wejściu dostaje ciąg znaków ASCII, mam wypisać nr ASCII i ilość wystąpień tego numery w posortowanej kolejności (biorąc pod uwagę znak ASCII), wszystko wydaje się okej ale w gdy na wejściu są polskie litery np. ę to otrzymuje inny kod ASCII niż w odpowiedziach na SPOJu ktoś pomoże mi zrozumieć dlaczego tak się dzieje?
Mój kod: https://ideone.com/OJcack
- Rejestracja:prawie 5 lat
- Ostatnio:dzień
- Postów:354
- Rejestracja:prawie 6 lat
- Ostatnio:około 24 godziny
- Postów:289
Masz inne kodowanie znaków ?
(base) bartek@Inspiron-7720:~$ echo -n "ąćęłńóśźż" | iconv -f utf8 -t iso8859-2 | hd
00000000 b1 e6 ea b3 f1 f3 b6 bc bf |.........|
00000009
(base) bartek@Inspiron-7720:~$ echo -n "ąćęłńóśźż" | iconv -f utf8 -t cp1250 | hd
00000000 b9 e6 ea b3 f1 f3 9c 9f bf |.........|
00000009
(base) bartek@Inspiron-7720:~$ echo -n "ąćęłńóśźż" | hd
00000000 c4 85 c4 87 c4 99 c5 82 c5 84 c3 b3 c5 9b c5 ba |................|
00000010 c5 bc |..|
00000012
- Rejestracja:prawie 5 lat
- Ostatnio:dzień
- Postów:354
Co powinienem zrobić?

- Rejestracja:ponad 8 lat
- Ostatnio:28 minut
To jest zadanie na sortowanie przez zliczanie. Ladowanie tutaj slownika a potem sortowanie go to troche pomylka. Tracisz sens tych zadanek.




- Rejestracja:prawie 5 lat
- Ostatnio:dzień
- Postów:354
Zmieniłem kod na taki:
https://ideone.com/TSdoTH dostaję błędną odpowiedź, (tablica jest tak duża ponieważ gdy dawałem 256 lub 300 to dostawałem błąd NZEC teraz mam po prostu błędną odpowiedź) nie wiem w czym robię błąd

- Rejestracja:ponad 8 lat
- Ostatnio:28 minut
Skup sie na drugim przykladzie.
Oczekiwane wyjscie:
(...)
114 10
115 1
116 1
119 6
122 4
153 2
179 2
195 2
196 2
Twoj program daje:
(...)
114 10
115 1
116 1
119 6
122 4
243 2
Co to za znaki?
https://theasciicode.com.ar/extended-ascii-code/box-drawings-single-horizontal-line-character-ascii-code-196.html
Poprobuj te konkretne znaki, ktore nie dzialaja debugowac

- Rejestracja:ponad 8 lat
- Ostatnio:28 minut
Ogolnie to raczej ich wina, ze takich znakow uzywaja... Idz na https://leetcode.com/ i na trac czasu na ten serwis
- Rejestracja:prawie 5 lat
- Ostatnio:ponad 4 lata
- Postów:394
O, panie...
To co masz w swoim rozwiązaniu to kody znaków Unicode. Tak ma być, jak ktoś współcześnie pracuje z tekstem to w 90% przypadków chce Unicode.
Taka litera "ę" jest kodowana w UTF-8 jako dwa bajty, "0xc4 0x99". Jak sobie przeliczysz to na liczby dziesiętne to się pokrywa z tym, co masz w przykładzie.
Szybkie wyszukanie jak wczytać same bajty w Pythonie zwraca takie coś https://stackoverflow.com/questions/32282448/read-stdin-as-binary
Generalnie to i treść zadania i testy są kijowe, bo sugerują, że dostaniesz znaki ASCII, które z definicji nie mogą przekraczać wartości 127. A w praktyce masz input UTF-8, który powinieneś potraktować jak ciąg bajtów.
Żeby było śmieszniej to naiwne rozwiązanie napisane w C++ by przeszło, bo tam domyślnie kodowanie nie jest brane pod uwagę. Zadanie jest z 2007 roku, więc pewnie autor nie ogarnął, że istnieją bardziej złożone kodowania. UTF-8 to wtedy jeszcze nie był tak powszechnie używany.