• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python każdy z każdym

Object Storage Arubacloud
0 głosów
707 wizyt
pytanie zadane 2 czerwca 2022 w Python przez Sebastian Szyja Bywalec (2,810 p.)
edycja 2 czerwca 2022 przez Sebastian Szyja

Siemanko ;))

Nie mam pojęcia jak zrobić aby program wykonał się „każdy z każdym” dla przykładu mecze w grupie. Potrzebuje aby w każdej grupie każdy zagrał z każdym bez powtórek tylko jeden mecz. Dla zobrazowania screen:

Problem pojawia się tez w tym, jak np. grupa się zmniejszy do 5/4 państw. Macie jakies pomysły?

3 odpowiedzi

+1 głos
odpowiedź 2 czerwca 2022 przez Great Stary wyjadacz (12,300 p.)
komentarz 2 czerwca 2022 przez Sebastian Szyja Bywalec (2,810 p.)
Ooooo spróbuje to ogarnąć - może podołam  jak nie dam rady wspomożesz mnie podczas pisania kodu?  robie projekt zaliczeniowy na studia…
komentarz 2 czerwca 2022 przez Great Stary wyjadacz (12,300 p.)
Algorytm jest bardzo prosty. Jeśli jednak napotkasz jakiś problem to zadaj nowe pytanie i wstaw swój kod.
0 głosów
odpowiedź 2 czerwca 2022 przez SzkolnyAdmin Szeryf (86,360 p.)
Poczytaj o losowaniu bez powtórzeń.
komentarz 2 czerwca 2022 przez Sebastian Szyja Bywalec (2,810 p.)
Hmmm może miałoby to sens gdybym losował pojedyncze państwo a nie parę ;(
0 głosów
odpowiedź 2 czerwca 2022 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Najprostsze, co przychodzi mi do głowy:

countries = ['Polska', 'Francja', 'Niemcy', 'Belgia', 'Austria', 'Ukraina']

for index, country in enumerate(countries):
	for opponent in countries[index + 1:]:
		print(f'{country} - {opponent}')

Zewnętrzna pętla iteruje się po kolei po wszystkich krajach, wewnętrzna tylko po tych, które mają wyższy indeks w tablicy. Dzięki temu zapewniamy unikalność :)

Możesz też skorzystać z biblioteki itertools. Rozwiązanie będzie jeszcze krótsze:

import itertools

countries = ['Polska', 'Francja', 'Niemcy', 'Belgia', 'Austria', 'Ukraina']

for country, opponent in itertools.combinations(countries, 2):
	print(f'{country} - {opponent}')

Funkcja itertools.combinations generuje wszystkie kombinacje bez powtórzeń (https://pl.wikipedia.org/wiki/Kombinacja_bez_powt%C3%B3rze%C5%84) o zadanym rozmiarze, czyli dobiera w pary (trójki, czwórki itp. - zależnie od potrzeb) elementy czegoś iterowalnego (w tym przypadku listy).

Mam nadzieję, że o to Ci chodziło. Jeśli nie, to śmiało mów, a pomyślimy co z tym dalej zrobić. wink

komentarz 2 czerwca 2022 przez Sebastian Szyja Bywalec (2,810 p.)
Hejka, powiem Ci tak jesteśmy na dobrej dobrze!

Na studniach dostaliśmy projekt do zrobienia na temat wieloprocesowości - temat dowolny. Więc wybrałem temat symulacji rozgrywek w piłkę nożną. :)

I teraz próbuje wykminić symulację meczów a mianowicie:

 

1 proces = jedna grupa zespołów (np. Francja, Polska, Norwegia, Niemcy, Belgia, Czechy)

w tym procesie tworzę podział na wątki: w wyżej dodanym screenie widać podział na poszczególne wątki. W pierwszym wątku grają: (Polska - Francja, Nimecy - Belgia, Austria - Ukraina), wątek drugi czeka na zakończenie pierwszego itd... nie mam na to pomysłu jak to podzielić....

Podobne pytania

0 głosów
2 odpowiedzi 337 wizyt
pytanie zadane 11 listopada 2018 w Python przez adam11 Użytkownik (570 p.)
+2 głosów
0 odpowiedzi 133 wizyt
pytanie zadane 11 lutego 2022 w C i C++ przez RufinB Obywatel (1,830 p.)

92,550 zapytań

141,392 odpowiedzi

319,520 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...