Tugas Alpro Buatlah program (Python/C++) yang memenuhi spesifikasi berikut ini. Menerima INPUT:

Berikut ini adalah pertanyaan dari 4dministraktor pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas

Tugas AlproBuatlah program (Python/C++) yang memenuhi spesifikasi berikut ini.
Menerima INPUT:
1. Kumpulan beberapa angka satuan
2. Banyak digit bilangan bulat yang akan dibentuk dari angka-angka satuan dari input.
3. Kriteria batas (lebih dari sebuah bilangan, atau kurang dari sebuah bilangan) sebanyak 1 kriteria saja.
Menghasilkan OUTPUT:
1. Banyaknya bilangan bulat yang dapat dibentuk dari angka-angka yang berbeda (dari angka-angka satuan yang di-input-kan) sesuai kriteria batas.
2. Daftar bilangan-bilangan bulat yang dapat dibentuk.
_______________
Mohon bantuannya.. terima kasih.

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Kode Program (Python)

from itertools import permutations

def parse_digit(kumpulan_digit: str) -> str:
   res = ''.join(n for n in kumpulan_digit if n.isdigit())
   res = ''.join(list(set(map(str, res))))
   return res

def ciptakan_bilangan(kumpulan_digit: str, n: int, kriteria: str) -> list:
   dig = parse_digit(kumpulan_digit)
   lst = []
   for x in list(permutations(dig, n)):
       i = int(''.join(x))
       if eval(f'{i} {kriteria}'):
           lst.append(i)
   lst.sort()
   return lst

### Program Utama
if __name__ == '__main__':
   digit = input('\nDigit yang bisa digunakan: ').strip()
   n = int(input('Banyak digit bilangan yang dibentuk: '))
   kriteria = input('Kriteria (dimulai dengan "<" atau ">"): ').strip()
   l = ciptakan_bilangan(digit, n, kriteria)
   print('===========================')
   print(f'Banyak bilangan {n}-digit {kriteria} yang dapat dibentuk = {len(l)}.')
   print(f'Bilangan-bilangan tersebut adalah: ')
   print(', '.join(str(x) for x in l))
### Akhir Program Utama
________________

Pembahasan

Untuk persoalan ini, karena tidak ada batasan mengenai penggunaan fungsi/modul, maka kita dapat memanfaatkan modul "itertools" pada Python. Dari modul itertools, kita gunakan fungsi permutations(a, b), yang menghasilkan kumpulan hasil permutasi dari karakter individual pada string a (bukan hanya angka) dan berbeda, sepanjang b karakter.

Silahkan cermati fungsi ciptakan_bilangan() pada program di atas. Saya rasa algoritmenya tidak sulit.

Contoh Hasil Eksekusi Program

Diberikan 3 contoh kasus. Silahkan mencocokkan dengan gambar hasil eksekusi.

Kasus 1

  • Digit yang dapat digunakan: 0 hingga 9.
  • Banyak digit bilangan yang dibentuk: 3 (bilangan ratusan)
  • Kriteria: > 500

Perhitungan matematis:

  • Posisi ratusan: 5 cara
  • Posisi puluhan: 9 cara
  • Posisi satuan: 8 cara
  • ⇒ Banyak bilangan 3-digit yang lebih dari 500 yang dapat dibentuk dari digit/angka 0 hingga 9 adalah:
    5 × 9 × 8 = 40 × 9 = 360 bilangan.

Kasus 2

  • Digit yang dapat digunakan: 2, 3, 5, 7, 8, 9.
  • Banyak digit bilangan yang dibentuk: 2 (bilangan puluhan)
  • Kriteria: > 23

Perhitungan matematis:

  • Jika posisi puluhan diisi angka 2, maka banyaknya cara = 4 cara.
  • Selain itu:
    Posisi puluhan: 5 cara
    Posisi satuan: 5 cara
  • ⇒ Banyak bilangan 2-digit yang lebih dari 23 yang dapat dibentuk dari digit/angka 2, 3, 5, 7, 8, dan 9. adalah:
    4 + 5×5 = 29 bilangan.

Kasus 3

  • Digit yang dapat digunakan: 2, 5, 6, 7, 8, 9.
  • Banyak digit bilangan yang dibentuk: 4 (bilangan puluhan)
  • Kriteria: > 5500

Perhitungan matematis:

  • Posisi ribuan tidak dapat diisi angka 2.
  • Jika posisi ribuan diisi angka 5, maka:
    Posisi ratusan: 4 cara
    Posisi puluhan: 4 cara
    Posisi satuan: 3 cara
    ⇒ Subtotal: 48 cara
  • Selain itu:
    Posisi ribuan: 4 cara
    Posisi ratusan: 5 cara
    Posisi puluhan: 4 cara
    Posisi satuan: 3 cara
    ⇒ Subtotal: 240 cara
  • ⇒ Banyak bilangan 4-digit yang lebih dari 5500 yang dapat dibentuk dari digit/angka 2, 5, 6, 7, 8, dan 9. adalah:
    48 + 240 = 288 bilangan.

Kode Program (Python)from itertools import permutationsdef parse_digit(kumpulan_digit: str) -> str:    res = ''.join(n for n in kumpulan_digit if n.isdigit())    res = ''.join(list(set(map(str, res))))    return resdef ciptakan_bilangan(kumpulan_digit: str, n: int, kriteria: str) -> list:    dig = parse_digit(kumpulan_digit)    lst = []    for x in list(permutations(dig, n)):        i = int(''.join(x))        if eval(f'{i} {kriteria}'):            lst.append(i)    lst.sort()    return lst### Program Utamaif __name__ == '__main__':    digit = input('\nDigit yang bisa digunakan: ').strip()    n = int(input('Banyak digit bilangan yang dibentuk: '))    kriteria = input('Kriteria (dimulai dengan Kode Program (Python)from itertools import permutationsdef parse_digit(kumpulan_digit: str) -> str:    res = ''.join(n for n in kumpulan_digit if n.isdigit())    res = ''.join(list(set(map(str, res))))    return resdef ciptakan_bilangan(kumpulan_digit: str, n: int, kriteria: str) -> list:    dig = parse_digit(kumpulan_digit)    lst = []    for x in list(permutations(dig, n)):        i = int(''.join(x))        if eval(f'{i} {kriteria}'):            lst.append(i)    lst.sort()    return lst### Program Utamaif __name__ == '__main__':    digit = input('\nDigit yang bisa digunakan: ').strip()    n = int(input('Banyak digit bilangan yang dibentuk: '))    kriteria = input('Kriteria (dimulai dengan Kode Program (Python)from itertools import permutationsdef parse_digit(kumpulan_digit: str) -> str:    res = ''.join(n for n in kumpulan_digit if n.isdigit())    res = ''.join(list(set(map(str, res))))    return resdef ciptakan_bilangan(kumpulan_digit: str, n: int, kriteria: str) -> list:    dig = parse_digit(kumpulan_digit)    lst = []    for x in list(permutations(dig, n)):        i = int(''.join(x))        if eval(f'{i} {kriteria}'):            lst.append(i)    lst.sort()    return lst### Program Utamaif __name__ == '__main__':    digit = input('\nDigit yang bisa digunakan: ').strip()    n = int(input('Banyak digit bilangan yang dibentuk: '))    kriteria = input('Kriteria (dimulai dengan Kode Program (Python)from itertools import permutationsdef parse_digit(kumpulan_digit: str) -> str:    res = ''.join(n for n in kumpulan_digit if n.isdigit())    res = ''.join(list(set(map(str, res))))    return resdef ciptakan_bilangan(kumpulan_digit: str, n: int, kriteria: str) -> list:    dig = parse_digit(kumpulan_digit)    lst = []    for x in list(permutations(dig, n)):        i = int(''.join(x))        if eval(f'{i} {kriteria}'):            lst.append(i)    lst.sort()    return lst### Program Utamaif __name__ == '__main__':    digit = input('\nDigit yang bisa digunakan: ').strip()    n = int(input('Banyak digit bilangan yang dibentuk: '))    kriteria = input('Kriteria (dimulai dengan

Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Sun, 06 Nov 22