Upload files to "/"
This commit is contained in:
parent
ebd7daea4a
commit
e713b5bfda
165
tugas_4_2_mk_daa_natasya_poetri_hanyoro (1).py
Normal file
165
tugas_4_2_mk_daa_natasya_poetri_hanyoro (1).py
Normal file
@ -0,0 +1,165 @@
|
||||
# -*- 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 <iostream>
|
||||
# #include <vector>
|
||||
# #include <string>
|
||||
# #include <sstream>
|
||||
# #include <algorithm>
|
||||
#
|
||||
# // Fungsi untuk mencari urutan berurutan terpanjang dari angka yang identik dalam sebuah vector.
|
||||
# std::pair<std::vector<int>, int> find_longest_identical_contiguous_subsequence(const std::vector<int>& arr) {
|
||||
# if (arr.empty()) {
|
||||
# return {{}, 0};
|
||||
# }
|
||||
#
|
||||
# int max_length = 0;
|
||||
# std::vector<int> longest_sequence;
|
||||
#
|
||||
# int current_length = 0;
|
||||
# std::vector<int> 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<int> 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<std::vector<int>, 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
|
||||
Loading…
x
Reference in New Issue
Block a user