diff --git a/TUGAS_4_2_MK_DAA_NATASYA_POETRI_HANYORO (1).ipynb b/TUGAS_4_2_MK_DAA_NATASYA_POETRI_HANYORO (1).ipynb new file mode 100644 index 0000000..924aedd --- /dev/null +++ b/TUGAS_4_2_MK_DAA_NATASYA_POETRI_HANYORO (1).ipynb @@ -0,0 +1,282 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "\"PROGRAM URUTAN TERPANJANG MENGGUNAKAN PHYTON\"" + ], + "metadata": { + "id": "GYqMVkNM-IMA" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "056f25d6" + }, + "source": [ + "### Program untuk Mencari Urutan Angka Identik Berurutan Terpanjang\n", + "\n", + "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." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "95cdf746", + "outputId": "e98840bb-a83a-4901-e34d-7410c4e06786" + }, + "source": [ + "# String input yang berisi angka-angka (dapat Anda modifikasi)\n", + "# Angka dipisahkan oleh spasi.\n", + "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\"\n", + "\n", + "# Mengurai string input menjadi daftar bilangan bulat\n", + "# strip().isdigit() digunakan untuk menangani potensi spasi ganda\n", + "numbers = [int(num) for num in input_str.split() if num.strip().isdigit()]\n", + "\n", + "print(\"Daftar angka input:\", numbers)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Daftar angka input: [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]\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6d5bcf75", + "outputId": "ea57e47a-e005-4cb5-a82b-886d0794cd82" + }, + "source": [ + "def find_longest_identical_contiguous_subsequence(arr):\n", + " \"\"\"\n", + " Mencari urutan berurutan terpanjang dari angka yang identik dalam sebuah list.\n", + "\n", + " Args:\n", + " arr (list): Daftar bilangan bulat.\n", + "\n", + " Returns:\n", + " tuple: Sebuah tuple berisi (longest_sequence, length),\n", + " di mana longest_sequence adalah list urutan terpanjang yang ditemukan,\n", + " dan length adalah panjangnya.\n", + " \"\"\"\n", + " if not arr:\n", + " return [], 0\n", + "\n", + " max_length = 0\n", + " longest_sequence = []\n", + "\n", + " current_length = 0\n", + " current_sequence = []\n", + "\n", + " for i in range(len(arr)):\n", + " # Jika ini elemen pertama atau elemen saat ini sama dengan elemen sebelumnya\n", + " if i == 0 or arr[i] == arr[i-1]:\n", + " current_length += 1\n", + " current_sequence.append(arr[i])\n", + " else:\n", + " # Urutan angka identik terputus. Periksa apakah urutan saat ini lebih panjang dari yang terpanjang sejauh ini.\n", + " if current_length > max_length:\n", + " max_length = current_length\n", + " longest_sequence = current_sequence\n", + " # Reset untuk memulai urutan baru\n", + " current_length = 1\n", + " current_sequence = [arr[i]]\n", + "\n", + " # Setelah loop selesai, periksa urutan terakhir (jika itu yang terpanjang)\n", + " if current_length > max_length:\n", + " max_length = current_length\n", + " longest_sequence = current_sequence\n", + "\n", + " return longest_sequence, max_length\n", + "\n", + "# Memanggil fungsi untuk menemukan urutan terpanjang\n", + "longest_sequence, length = find_longest_identical_contiguous_subsequence(numbers)\n", + "\n", + "print(f\"Urutan identik berurutan terpanjang: {longest_sequence}\")\n", + "print(f\"Panjang urutan: {length}\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Urutan identik berurutan terpanjang: [4, 4, 4, 4, 4, 4, 4]\n", + "Panjang urutan: 7\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "\"PROGRAM URUTAN TERPANJANG MENGGUNAKAN C++" + ], + "metadata": { + "id": "d7xnFdFB_Q37" + } + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "e9d02035", + "outputId": "8ddbd38a-664b-4d39-caa5-68ebdf1435fd" + }, + "source": [ + "%%writefile longest_sequence.cpp\n", + "#include \n", + "#include \n", + "#include \n", + "#include \n", + "#include \n", + "\n", + "// Fungsi untuk mencari urutan berurutan terpanjang dari angka yang identik dalam sebuah vector.\n", + "std::pair, int> find_longest_identical_contiguous_subsequence(const std::vector& arr) {\n", + " if (arr.empty()) {\n", + " return {{}, 0};\n", + " }\n", + "\n", + " int max_length = 0;\n", + " std::vector longest_sequence;\n", + "\n", + " int current_length = 0;\n", + " std::vector current_sequence;\n", + "\n", + " for (size_t i = 0; i < arr.size(); ++i) {\n", + " // Jika ini elemen pertama atau elemen saat ini sama dengan elemen sebelumnya\n", + " if (i == 0 || arr[i] == arr[i-1]) {\n", + " current_length++;\n", + " current_sequence.push_back(arr[i]);\n", + " } else {\n", + " // Urutan angka identik terputus. Periksa apakah urutan saat ini lebih panjang dari yang terpanjang sejauh ini.\n", + " if (current_length > max_length) {\n", + " max_length = current_length;\n", + " longest_sequence = current_sequence;\n", + " }\n", + " // Reset untuk memulai urutan baru\n", + " current_length = 1;\n", + " current_sequence = {arr[i]};\n", + " }\n", + " }\n", + "\n", + " // Setelah loop selesai, periksa urutan terakhir (jika itu yang terpanjang)\n", + " if (current_length > max_length) {\n", + " max_length = current_length;\n", + " longest_sequence = current_sequence;\n", + " }\n", + "\n", + " return {longest_sequence, max_length};\n", + "}\n", + "\n", + "int main() {\n", + " // String input yang berisi angka-angka (dapat Anda modifikasi)\n", + " 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\";\n", + "\n", + " // Menguraikan string input menjadi daftar bilangan bulat\n", + " std::vector numbers;\n", + " std::stringstream ss(input_str);\n", + " std::string segment;\n", + " int num;\n", + "\n", + " while (ss >> segment) {\n", + " try {\n", + " num = std::stoi(segment);\n", + " numbers.push_back(num);\n", + " } catch (const std::invalid_argument& e) {\n", + " // Abaikan non-angka\n", + " continue;\n", + " } catch (const std::out_of_range& e) {\n", + " // Abaikan angka yang terlalu besar/kecil\n", + " continue;\n", + " }\n", + " }\n", + "\n", + " std::cout << \"Daftar angka input: \";\n", + " for (int n : numbers) {\n", + " std::cout << n << \" \";\n", + " }\n", + " std::cout << std::endl;\n", + "\n", + " // Memanggil fungsi untuk menemukan urutan terpanjang\n", + " std::pair, int> result = find_longest_identical_contiguous_subsequence(numbers);\n", + "\n", + " std::cout << \"Urutan identik berurutan terpanjang: \";\n", + " for (int n : result.first) {\n", + " std::cout << n << \" \";\n", + " }\n", + " std::cout << std::endl;\n", + " std::cout << \"Panjang urutan: \" << result.second << std::endl;\n", + "\n", + " return 0;\n", + "}" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Writing longest_sequence.cpp\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "d9e4b43d", + "outputId": "c0581caa-2fce-46a9-ebad-9acdca2ff2f9" + }, + "source": [ + "!g++ longest_sequence.cpp -o longest_sequence\n", + "!./longest_sequence" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Daftar angka input: 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 \n", + "Urutan identik berurutan terpanjang: 4 4 4 4 4 4 4 \n", + "Panjang urutan: 7\n" + ] + } + ] + } + ] +} \ No newline at end of file