from os import system
odp = input('Wyczyścić ekran (T - tak, inny znak - nie) ? ')
if odp == 'T':
system('cls')
print('''
Zadanie 1.
Przyjmujemy taką definicję:
napis (ciąg znaków) jest palindromem, jeżeli zapisany
od tyłu ma taką samą postać.
Np. są palindromami napisy: 'asa', 'ALA'.
Które napisy ze zbioru napisów {'KOK','los','sos','kobyłamamałybok'}
są palindromiczne?
''')
napisy = ['KOK','los','sos','kobyłamamałybok']
print("Palindromy:")
for napis in napisy:
if napis == napis[::-1]:
print(napis)
print('''
Zadanie 2.
Liczba jest palindromiczna, jeżeli ma taką samą wartość jak liczba
o odwróconej kolejności cyfr.
Np. liczby 77, 333, 989, 10201 są palindromiczne.
Które liczby ze zbioru {3,49,66, 1551, 238832,57,26762, 123456654321}
są palindromiczne?
Nie przeprowadzać konwersji na dane typu string, nie korzystać z list.
Przeprowadzić działania tylko na liczbach.
''')
liczby = [3,49,66, 1551, 238832,57,26762, 123456654321]
print("Liczby palindromiczne:")
for liczba in liczby:
poczatkowa_liczba = liczba
wynik = 0
while liczba > 0:
cyfra = liczba % 10
wynik = wynik * 10 + cyfra
liczba = liczba // 10
if poczatkowa_liczba == wynik:
print(poczatkowa_liczba)
print('''
Zadanie 3.
Zbiór jest to zestawienie elementów w pewną całość.
W zbiorze elementy się nie powtarzają.
Podzbiór zbioru to zbiór złożony z dowolnych elementów tego zbioru.
Zatem za ten sam zbiór uważamy zbiory różniące się tylko kolejnością elementów.
Wypisać wszystkie podzbiory 4. elementowe zbioru {1,2,3,4,5,6}.
ILe ich jest?
''')
zbior = [1, 2, 3, 4, 5, 6]
def generuj_podzbiory(zbior):
podzbiory = []
n = len(zbior)
zbior_list = zbior
for i in range(2**n):
podzbior = []
for j in range(n):
if (i & (1 << j)) > 0:
podzbior.append(zbior_list[j])
if len(podzbior) == 4:
podzbiory.append(podzbior)
return podzbiory
podzbiory_4_elementowe = generuj_podzbiory(zbior)
print("Podzbiory 4-elementowe zbioru [1, 2, 3, 4, 5, 6]:")
for podzbior in podzbiory_4_elementowe:
print(podzbior)
print("Ilość podzbiorów:")
print(len(podzbiory_4_elementowe))
print('''
Zadanie 4.
Każdą liczbę naturalną z {2,14,25,38,64,81}
zapisać w sytemie o naturalnej podstawie z <2,9>.
Nie wykonywać konwersji na wartości typu string.
''')
liczby = [2, 14, 25, 38, 64, 81]
for liczba in liczby:
print(f"Liczba {liczba} w systemie o podstawie 2-9:")
for podstawa in range(2, 10):
wynik = []
liczba_poczatkowa = liczba
while liczba_poczatkowa > 0:
wynik.insert(0, liczba_poczatkowa % podstawa)
liczba_poczatkowa //= podstawa
print(f"Podstawa {podstawa}: ", end="")
for znak in wynik:
print(znak, end="")
print()
print()
print('''
Zadanie 5.
Liczby: 2,1,3,4,6,5,10,8,9,7
posortować rosnąco ze względu na wartość reszty z dzielenia przez 3.
''')
liczby = [2,1,3,4,6,5,10,8,9,7]
print(sorted(liczby, key= lambda x: x%3))
napisy = ['KOK','los','sos','kobyłamamałybok']
for napis in napisy:
if napis == napis[::-1]:
print(f"Napis {napis} jest palindromem")
liczby = [3,49,66, 1551, 238832,57,26762, 123456654321]
def czy_palindromiczna(liczba):
poczatkowa_liczba = liczba
odwrocona_liczba = 0
while liczba > 0:
cyfra = liczba % 10
odwrocona_liczba = odwrocona_liczba * 10 + cyfra
liczba = liczba // 10
return poczatkowa_liczba == odwrocona_liczba
for liczba in liczby:
if czy_palindromiczna(liczba):
print(f"Liczba {liczba} jest palindromiczna")
#1 sposób
def generuj_podzbiory(zbior):
podzbiory = []
n = len(zbior)
zbior_list = list(zbior)
for i in range(2**n):
podzbior = [zbior_list[j] for j in range(n) if (i & (1 << j)) > 0]
if len(podzbior) == 4:
podzbiory.append(set(podzbior))
return podzbiory
zbior = {1, 2, 3, 4, 5, 6}
podzbiory_4_elementowe = generuj_podzbiory(zbior)
print(f"Podzbiory 4-elementowe zbioru {zbior}:")
print(*podzbiory_4_elementowe, sep='\n')
print(f"Ilość podzbiorów: {len(podzbiory_4_elementowe)}")
#2 sposób
from itertools import combinations
zbior = {1, 2, 3, 4, 5, 6}
print("Podzbiory 4-elementowe zbioru {1, 2, 3, 4, 5, 6}:")
print(*combinations(zbior, 4), sep="\n")
print(f"Ilość podzbiorów: {len(podzbiory_4_elementowe)}")
def zapisz_w_systemie(liczba, podstawa):
wynik = []
while liczba > 0:
wynik.insert(0, liczba % podstawa)
liczba //= podstawa
return wynik or [0]
liczby = [2, 14, 25, 38, 64, 81]
for liczba in liczby:
print(f"Liczba {liczba} w systemie o podstawie 2-9:")
for podstawa in range(2, 10):
wynik = zapisz_w_systemie(liczba, podstawa)
print(f"Podstawa {podstawa}: ", end="")
print(*wynik, sep="")
print()
liczby = [2,1,3,4,6,5,10,8,9,7]
print(*sorted(liczby, key= lambda x: x%3), sep=", ")
napisy = ['KOK','los','sos','kobyłamamałybok']
print("Palindromy:")
for napis in napisy:
if napis == napis[::-1]:
print(napis)
liczby = [3,49,66, 1551, 238832,57,26762, 123456654321]
print("Liczby palindromiczne:")
for liczba in liczby:
poczatkowa_liczba = liczba
wynik = 0
while liczba > 0:
cyfra = liczba % 10
wynik = wynik * 10 + cyfra
liczba = liczba // 10
if poczatkowa_liczba == wynik:
print(poczatkowa_liczba)
zbior = [1, 2, 3, 4, 5, 6]
def generuj_podzbiory(zbior):
podzbiory = []
n = len(zbior)
zbior_list = zbior
for i in range(2**n):
podzbior = []
for j in range(n):
if (i & (1 << j)) > 0:
podzbior.append(zbior_list[j])
if len(podzbior) == 4:
podzbiory.append(podzbior)
return podzbiory
podzbiory_4_elementowe = generuj_podzbiory(zbior)
print("Podzbiory 4-elementowe zbioru [1, 2, 3, 4, 5, 6]:")
for podzbior in podzbiory_4_elementowe:
print(podzbior)
print("Ilość podzbiorów:")
print(len(podzbiory_4_elementowe))
liczby = [2, 14, 25, 38, 64, 81]
for liczba in liczby:
print(f"Liczba {liczba} w systemie o podstawie 2-9:")
for podstawa in range(2, 10):
wynik = []
liczba_poczatkowa = liczba
while liczba_poczatkowa > 0:
wynik.insert(0, liczba_poczatkowa % podstawa)
liczba_poczatkowa //= podstawa
print(f"Podstawa {podstawa}: ", end="")
for znak in wynik:
print(znak, end="")
print()
print()
liczby = [2,1,3,4,6,5,10,8,9,7]
print(sorted(liczby, key= lambda x: x%3))