Obliczanie numeru grupy na Wnukówkach

2021-03-17
Witold Paluszyński

1. Wstęp

System wnukówek zakłada jednoczesne pisanie prostego testu na sali wykładowej z podziałem na grupy. Każdy student wylicza swój numer grupy na podstawie swojego numeru indeksu PWr (nr albumu), oraz bitowej maski testu, która jest liczbą binarną udostępnianą przez prowadzącego dla konkretnego testu.

Sposób obliczenia numeru grupy jest specyficzny, lecz został tak pomyślany, aby można było wyznaczyć numer grupy w bardzo prosty sposób, w maksymalnym stopniu unikając pomyłek, nawet w całkowicie ręcznej procedurze.

Ten sposób obliczania numerów grup został wymyślony przez mojego nieżyjącego już Kolegę i Przyjaciela, Marka Wnuka, znanego i poważanego naukowca i wykładowcę Wydziału Elektroniki Politechniki Wrocławskiej. Na Jego cześć nazwałem ten typ testów Wnukówkami.

Numer indeksu jest sześciocyfrową liczbą dziesiętną. Do obliczeń potrzebna będzie wersja binarna tego numeru.

Maska testu jest zawsze liczbą binarną. Może ona zawierać jedną lub więcej jedynek.

Numer grupy otrzymujemy zawsze jako liczbę binarną, lecz musimy ją interpretować po prostu jako liczbę, a więc np. zamienić ją na wersję dziesiątkową.

2. Aplikacja Android

Najprostszym sposobem obliczania numeru grupy jest użycie aplikacji androidowej dostępnej tu: Group number calculation app

3. Ręczne obliczanie numeru grupy

Sposób obliczenia numeru grupy można wyjaśnić na następujących przykładach. Załóżmy, że numer indeksu jest 222222. Reprezentacja binarna tej liczby to 110110010000001110. Dla celów obliczania numeru grupy wystarczy posługiwać się końcówką tej liczby. W praktyce nigdy nie będzie potrzeba więcej niż ostatnie osiem bitów binarnego numeru indeksu:

...00001110

Reguła wyznaczania numeru grupy: dopasuj bitową maskę testu do końcówki numeru indeksu, i wybierz z tego numeru bity wskazane przez jedynki w masce testu. Kombinacja tych bitów jest binarnym numerem grupy.

Przykład 1: maska testu wynosi 11

maska testu11
numer indeksu ...00001110
wybrane bity10
numer grupy wynosi binarne 10 czyli 2

Przykład 2: maska testu wynosi 1010

maska testu1010
numer indeksu ...00001110
wybrane bity11
numer grupy wynosi binarne 11 czyli 3

Przykład 3: maska testu wynosi 10001

maska testu10001
numer indeksu ...00001110
wybrane bity00
numer grupy wynosi binarne 00 czyli 0

Przykład 4: maska testu wynosi 10101

maska testu10101
numer indeksu ...00001110
wybrane bity010
numer grupy wynosi binarne 010 czyli 2

4. Pamiętanie numeru indeksu

Wyznaczanie numeru grupy na podstawie numeru indeksu i bitowej maski testu nie wymaga żadnych obliczeń arytmetycznych, a jedynie dopasowania i wybierania bitów. Teoretycznie powinno to być możliwe - i łatwe - przez narysowanie na kartce tabelki jak w powyższych przykładach, i proste odczytanie numeru grupy. Jednak trudnością jest konieczność pamiętania binarnego numeru indeksu.

Zadanie to można sobie znacznie ułatwić posługując się pośrednią reprezentacją heksadecymalną (szesnastkową). Na przykład, wymieniony wcześniej numer indeksu 222222 ma postać szesnastkową 3640E. Ważne jest by pamiętać, że w reprezentacji szesnastkowej każda cyfra szesnastkowa odpowiada dokładnie czterem bitom reprezentacji binarnej. Zatem zamiast pamiętać ostatnie osiem cyfr binarnych (bitów) numeru indeksu, wystarczy zapamiętać ostatnie dwie cyfry szesnastkowe: 0E. Jak? Trzeba powtarzać sobie przez kilka godzin dziennie: Jestem 0E. Jestem 0E. Jestem 0E. ...

I co potem można z tym zrobić? Wystarczy poćwiczyć wzorce konwersji binarno-heksadecymalnej:

0(hex)=0000(bin)  4(hex)=0100(bin)  8(hex)=1000(bin)  C(hex)=1100(bin)
1(hex)=0001(bin)  5(hex)=0101(bin)  9(hex)=1001(bin)  D(hex)=1101(bin)
2(hex)=0010(bin)  6(hex)=0110(bin)  A(hex)=1010(bin)  E(hex)=1110(bin)
3(hex)=0011(bin)  7(hex)=0111(bin)  B(hex)=1011(bin)  F(hex)=1111(bin)
i pamiętaną końcówkę 0E możemy rozpisać z pamięci na potrzebne 0000 1110.