# -*- coding: utf-8 -*- """TUGAS-4.2-MK-DAA-NATASYA-POETRI-HANYORO.ipynb Automatically generated by Colab. Original file is located at https://colab.research.google.com/drive/1DWetqHFchbLDWOHU4-6hrccYi2FII2e2 "PROGRAM URUTAN TERPANJANG MENGGUNAKAN PHYTON" ### Program untuk Mencari Urutan Angka Identik Berurutan Terpanjang Program ini akan mencari segmen berurutan terpanjang dalam daftar angka input di mana semua angka dalam segmen tersebut adalah sama. Input angka akan dipisahkan oleh spasi. """ # String input yang berisi angka-angka (dapat Anda modifikasi) # Angka dipisahkan oleh spasi. input_str = "10 20 20 20 20 5 15 25 30 1 2 3 4 4 4 4 4 4 4 5 6 7 8 9 9 9 10 9 8 7 6 5 4 100 100 101 102 103" # Mengurai string input menjadi daftar bilangan bulat # strip().isdigit() digunakan untuk menangani potensi spasi ganda numbers = [int(num) for num in input_str.split() if num.strip().isdigit()] print("Daftar angka input:", numbers) def find_longest_identical_contiguous_subsequence(arr): """ Mencari urutan berurutan terpanjang dari angka yang identik dalam sebuah list. Args: arr (list): Daftar bilangan bulat. Returns: tuple: Sebuah tuple berisi (longest_sequence, length), di mana longest_sequence adalah list urutan terpanjang yang ditemukan, dan length adalah panjangnya. """ if not arr: return [], 0 max_length = 0 longest_sequence = [] current_length = 0 current_sequence = [] for i in range(len(arr)): # Jika ini elemen pertama atau elemen saat ini sama dengan elemen sebelumnya if i == 0 or arr[i] == arr[i-1]: current_length += 1 current_sequence.append(arr[i]) else: # Urutan angka identik terputus. Periksa apakah urutan saat ini lebih panjang dari yang terpanjang sejauh ini. if current_length > max_length: max_length = current_length longest_sequence = current_sequence # Reset untuk memulai urutan baru current_length = 1 current_sequence = [arr[i]] # Setelah loop selesai, periksa urutan terakhir (jika itu yang terpanjang) if current_length > max_length: max_length = current_length longest_sequence = current_sequence return longest_sequence, max_length # Memanggil fungsi untuk menemukan urutan terpanjang longest_sequence, length = find_longest_identical_contiguous_subsequence(numbers) print(f"Urutan identik berurutan terpanjang: {longest_sequence}") print(f"Panjang urutan: {length}") """"PROGRAM URUTAN TERPANJANG MENGGUNAKAN C++""" # Commented out IPython magic to ensure Python compatibility. # %%writefile longest_sequence.cpp # #include # #include # #include # #include # #include # # // Fungsi untuk mencari urutan berurutan terpanjang dari angka yang identik dalam sebuah vector. # std::pair, int> find_longest_identical_contiguous_subsequence(const std::vector& arr) { # if (arr.empty()) { # return {{}, 0}; # } # # int max_length = 0; # std::vector longest_sequence; # # int current_length = 0; # std::vector current_sequence; # # for (size_t i = 0; i < arr.size(); ++i) { # // Jika ini elemen pertama atau elemen saat ini sama dengan elemen sebelumnya # if (i == 0 || arr[i] == arr[i-1]) { # current_length++; # current_sequence.push_back(arr[i]); # } else { # // Urutan angka identik terputus. Periksa apakah urutan saat ini lebih panjang dari yang terpanjang sejauh ini. # if (current_length > max_length) { # max_length = current_length; # longest_sequence = current_sequence; # } # // Reset untuk memulai urutan baru # current_length = 1; # current_sequence = {arr[i]}; # } # } # # // Setelah loop selesai, periksa urutan terakhir (jika itu yang terpanjang) # if (current_length > max_length) { # max_length = current_length; # longest_sequence = current_sequence; # } # # return {longest_sequence, max_length}; # } # # int main() { # // String input yang berisi angka-angka (dapat Anda modifikasi) # std::string input_str = "10 20 20 20 20 5 15 25 30 1 2 3 4 4 4 4 4 4 4 5 6 7 8 9 9 9 10 9 8 7 6 5 4 100 100 101 102 103"; # # // Menguraikan string input menjadi daftar bilangan bulat # std::vector numbers; # std::stringstream ss(input_str); # std::string segment; # int num; # # while (ss >> segment) { # try { # num = std::stoi(segment); # numbers.push_back(num); # } catch (const std::invalid_argument& e) { # // Abaikan non-angka # continue; # } catch (const std::out_of_range& e) { # // Abaikan angka yang terlalu besar/kecil # continue; # } # } # # std::cout << "Daftar angka input: "; # for (int n : numbers) { # std::cout << n << " "; # } # std::cout << std::endl; # # // Memanggil fungsi untuk menemukan urutan terpanjang # std::pair, int> result = find_longest_identical_contiguous_subsequence(numbers); # # std::cout << "Urutan identik berurutan terpanjang: "; # for (int n : result.first) { # std::cout << n << " "; # } # std::cout << std::endl; # std::cout << "Panjang urutan: " << result.second << std::endl; # # return 0; # } !g++ longest_sequence.cpp -o longest_sequence !./longest_sequence