Skip to content

Instantly share code, notes, and snippets.

@bastomiadi
Forked from ianmustafa/0-preface.md
Created June 1, 2021 02:21
Show Gist options
  • Select an option

  • Save bastomiadi/a738d979a27b11b28d5536b1759d7410 to your computer and use it in GitHub Desktop.

Select an option

Save bastomiadi/a738d979a27b11b28d5536b1759d7410 to your computer and use it in GitHub Desktop.

Revisions

  1. @ianmustafa ianmustafa revised this gist Mar 3, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 0-preface.md
    Original file line number Diff line number Diff line change
    @@ -7,7 +7,7 @@ untuk tantangannya di grup Telegram PHP Indonesia for Students. Tantangan ini sa
    > Misalkan kita mempunyai list berisikan bilangan bulat antara `1` sampai `n` sebanyak `n + 1` angka.
    > Yang pasti kita ketahui adalah minimal ada satu bilangan yang duplikat dalam list tersebut.
    >
    > Contohnya jika `n = 3` maka bisa jadi isi List tersebut adalah `3, 1, 1, 3` atau bisa juga `1, 2, 3, 3`
    > Contohnya jika `n = 3` maka bisa jadi isi List tersebut adalah `3, 1, 1, 3` atau bisa juga `1, 2, 3, 3`.
    ## Tugas
    Cari bilangan duplikat dalam list tersebut.
  2. @ianmustafa ianmustafa created this gist Mar 3, 2017.
    27 changes: 27 additions & 0 deletions 0-preface.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,27 @@
    # Tantangan PHP Indonesia for Student: Cari Bilangan Duplikat dalam List

    Sebelumnya, terima kasih kepada om Nur Hidayat (@hidayat365, [Pojok Programmer](http://pojokprogrammer.net))
    untuk tantangannya di grup Telegram PHP Indonesia for Students. Tantangan ini saya kerjakan karena iseng dan _nungguin_ deploy app. πŸ˜‚

    ## Latar Belakang
    > Misalkan kita mempunyai list berisikan bilangan bulat antara `1` sampai `n` sebanyak `n + 1` angka.
    > Yang pasti kita ketahui adalah minimal ada satu bilangan yang duplikat dalam list tersebut.
    >
    > Contohnya jika `n = 3` maka bisa jadi isi List tersebut adalah `3, 1, 1, 3` atau bisa juga `1, 2, 3, 3`
    ## Tugas
    Cari bilangan duplikat dalam list tersebut.

    ### Ketentuan
    * Cukup satu bilangan saja, jadi untuk contoh diatas, jawabannya boleh `1` atau `3`.
    * `n` boleh berupa konstanta atau input dari user. (Disini saya pilih input dari user)
    * Isi list boleh generate pakai random.

    ## Sedikit Curhat
    Solusi ini hanya bisa solving hingga `n` sebesar sejutaan. Diatas itu rawan terjadi
    _memory limit_. Mungkin lain kali akan saya improve (kalau ada yang request). 😊

    ## Ada pertanyaan?
    Silakan hubungi saya via Facebook [@iianmustafa](https://fb.me/iianmustafa),
    Twitter [@iianmustafa](https://twitter.com/iianmustafa) atau
    Telegram [@ianmustafa](https://telegram.me/ianmustafa).
    43 changes: 43 additions & 0 deletions 1-duplicate-in-list.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,43 @@
    <?php
    // Kita ambil nilai n dulu
    $n = readline('Masukkan nilai n [5]: ');
    // Jika tidak diisi, kita set n = 5 secara default
    $n = $n === '' ? 5 : $n;

    $break = false;

    // Disini masalahnya, rawan terjadi memory limit ketika
    // n terlalu besar
    foreach (range(0, $n) as $a)
    $list[] = rand(0, 9);

    // Disini ktai buat pengecekan
    foreach ($list as $i => $x) {
    // Simpan angka dari urutan bersangkutan ke $temp
    $temp = $x;

    // Lalu cek dalam list apakah ada angka yang sama
    foreach ($list as $j => $y) {
    // Jika angka yang sama ditemukan DAN tidak berada
    // di posisi yang sama, hentikan loop dan simpan
    // angka tersebut untuk output
    if ($i !== $j && $temp === $y) {
    $duplicate = $temp;

    // Set $break ke true untuk menghentikan loop
    $break = true;

    // Break 😊
    if ($break) break;
    }
    }

    // Break 😊
    if ($break) break;
    }

    // Output πŸ‘
    echo 'List: ' . implode(', ', $list) . "\n";
    // Untuk pengguna PHP < 7, gunakan kode berikut: isset($duplicate) ? $duplicate : 'tidak ada'
    echo 'Nomor kembar: ' . ($duplicate ?? 'tidak ada') . "\n";
    // Yay πŸŽ‰