Skip to content

Commit 72f88f1

Browse files
committed
Merge branch 'release/v1.1.0'
2 parents aec6d99 + 1b930cb commit 72f88f1

File tree

7 files changed

+131
-3
lines changed

7 files changed

+131
-3
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ Semua pembaruan pada `coding-interview` akan didokumentasikan pada dokumen ini.
44

55
## [Unreleased](https://github.com/ianriizky/coding-interview/compare/master...develop)
66

7+
## [v1.1.0 (2021-05-10)](https://github.com/ianriizky/coding-interview/compare/v1.0.0...v1.1.0)
8+
9+
### Baru
10+
- Studi kasus fizz buzz.
11+
712
## [v1.0.0 (2021-05-10)](https://github.com/ianriizky/coding-interview/releases/tag/v1.0.0)
813

914
### Baru

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ Untuk menginstal repository ini di lokal anda, jalankan perintah di bawah ini me
2525
composer create-project ianriizky/code-interview
2626
```
2727

28+
Packagist: https://packagist.org/packages/ianriizky/coding-interview
29+
2830
## *Testing*
2931

3032
Jalankan perintah di bawah ini untuk menjalankan *test script* melalui [phpunit](https://phpunit.de/).
@@ -35,8 +37,8 @@ Jalankan perintah di bawah ini untuk menjalankan *test script* melalui [phpunit]
3537

3638
## Daftar Studi Kasus yang Tersedia
3739

38-
- [ ] Fizz Buzz ➡ Programmer Zaman Now (https://www.youtube.com/watch?v=FKHV-i7UUvI)
39-
- [x] Palindrome ➡ Programmer Zaman Now (https://www.youtube.com/watch?v=DXQuiPKl79Y)
40+
- [x] [Fizz Buzz](src/FizzBuzz/README.md)
41+
- [x] [Palindrome](src/Palindrome/README.md)
4042

4143
Anda bisa membantu kami untuk menambah daftar studi kasus di atas dengan ikut berkontribusi pada *repository* ini. Lihat [`contributing.md`](CONTRIBUTING.md) untuk informasi selanjutnya.
4244

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "ianrizky/ianriizky-codinginterview",
2+
"name": "ianrizky/codinginterview",
33
"description": "Kumpulan source code dari pertanyaan atau studi kasus yang sering muncul saat mengikuti proses coding interview",
44
"type": "project",
55
"license": "MIT",

src/FizzBuzz/FizzBuzz.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
namespace Ianriizky\CodingInterview\FizzBuzz;
4+
5+
class FizzBuzz
6+
{
7+
/**
8+
* Create a new instance class.
9+
*
10+
* @param int $start
11+
* @param int $end
12+
* @param int $fizz
13+
* @param int $buzz
14+
* @return void
15+
*/
16+
public function __construct(
17+
protected int $start,
18+
protected int $end,
19+
protected int $fizz,
20+
protected int $buzz
21+
) {
22+
//
23+
}
24+
25+
/**
26+
* Create a new instance class in a static way.
27+
*
28+
* @param int $start
29+
* @param int $end
30+
* @param int $fizz
31+
* @param int $buzz
32+
* @return static
33+
*/
34+
public static function make(int $start, int $end, int $fizz = 3, int $buzz = 5)
35+
{
36+
return new static($start, $end, $fizz, $buzz);
37+
}
38+
39+
/**
40+
* Generate list of fizz buzz data.
41+
*
42+
* @return int[]|string[]
43+
*/
44+
public function generate(): array
45+
{
46+
return array_map(function ($number) {
47+
switch (true) {
48+
case $number % $this->fizz === 0 && $number % $this->buzz === 0:
49+
return 'Fizz Buzz';
50+
51+
case $number % $this->fizz === 0:
52+
return 'Fizz';
53+
54+
case $number % $this->buzz === 0:
55+
return 'Buzz';
56+
57+
default:
58+
return $number;
59+
}
60+
}, range($this->start, $this->end, 1));
61+
}
62+
}

src/FizzBuzz/README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Fizz Buzz
2+
3+
Fizz Buzz adalah permainan pengelompokan kata pada anak untuk mengajarkan mereka tentang pembagian. Pemain mengambil giliran untuk behitung secara bertingkat, dengan ketentuan bahwa setiap angka dengan kelipatan tiga akan diganti dengan kata "fizz", setiap angka dengan kelipatan lima akan diganti dengan kata "buzz", dan angka dengan kelipatan tiga dan limat akan diganti dengan kata "fizz buzz". Studi kasus ini sering digunakan oleh pewawancara untuk menyeleksi calon karyawan saat mengikuti *coding interview* di perusahaan dengan meminta mereka untuk menulis kode program tertentu untuk menghasilkan 100 Fizz Buzz pertama <sup id="pg1">[1](#fn1)</sup>.
4+
5+
Berikut ini adalah contoh *source code* dari studi kasus Fizz Buzz menggunakan bahasa pemrograman PHP <sup id="pg2">[2](#fn2)</sup>. Detail lengkapnya bisa dilihat [di sini](FizzBuzz.php).
6+
```php
7+
return array_map(function ($number) {
8+
switch (true) {
9+
case $number % 3 === 0 && $number % 5 === 0:
10+
return 'Fizz Buzz';
11+
12+
case $number % 3 === 0:
13+
return 'Fizz';
14+
15+
case $number % 5 === 0:
16+
return 'Buzz';
17+
18+
default:
19+
return $number;
20+
}
21+
}, range(1, 100, 1));
22+
```
23+
24+
---
25+
### Catatan Kaki:
26+
27+
<strong id="fn1">1</strong> [Fizz buzz, Wikipedia](https://en.wikipedia.org/wiki/Fizz_buzz). [](#pg1)
28+
<br>
29+
<strong id="fn2">2</strong> [Programmer Zaman Now - Coding Interview Fizz Buzz](https://www.youtube.com/watch?v=FKHV-i7UUvI). [](#pg2)
30+
<br>

src/Palindrome/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ return true;
7373
```
7474

7575
---
76+
### Catatan Kaki:
77+
7678
<strong id="fn1">1</strong> [Palindrom, Wikipedia bahasa Indonesia, ensiklopedia bebas](https://id.wikipedia.org/wiki/Palindrom). [](#pg1)
7779
<br>
7880
<strong id="fn2">2</strong> [Programmer Zaman Now - Coding Interview Palindrome (Solusi Palindrome)](https://www.youtube.com/watch?v=DXQuiPKl79Y&t=250s). [](#pg2)

tests/Unit/FizzBuzzTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
namespace Tests\Unit;
4+
5+
use Ianriizky\CodingInterview\FizzBuzz\FizzBuzz;
6+
use Tests\TestCase;
7+
8+
class FizzBuzzTest extends TestCase
9+
{
10+
/**
11+
* Assert that fizz buzz test has return valid data.
12+
*
13+
* @return void
14+
*/
15+
public function test_assert_fizz_buzz()
16+
{
17+
$this->assertEquals(FizzBuzz::make(1, 36)->generate(), [
18+
1, 2, 'Fizz', 4, 'Buzz',
19+
'Fizz', 7, 8, 'Fizz', 'Buzz',
20+
11, 'Fizz', 13, 14, 'Fizz Buzz',
21+
16, 17, 'Fizz', 19, 'Buzz',
22+
'Fizz', 22, 23, 'Fizz', 'Buzz',
23+
26, 'Fizz', 28, 29, 'Fizz Buzz',
24+
31, 32, 'Fizz', 34, 'Buzz', 'Fizz',
25+
]);
26+
}
27+
}

0 commit comments

Comments
 (0)