<?php
declare ( strict_types= 1 ) ;
function tekaTekiTeko( int $batas ) : void
{
// Validasi: harus integer ≥ 20
if ( $batas < 20 ) {
throw new InvalidArgumentException(
"Parameter \$ batas harus unsigned integer minimal 20. Ditemukan: {$batas} "
) ;
}
// Loop dari 1 sampai batas
for ( $i = 1 ; $i <= $batas ; $i ++ ) {
$output = '' ;
// Cek kelipatan
if ( $i % 2 === 0 ) {
$output .= 'Teka' ;
}
if ( $i % 3 === 0 ) {
$output .= 'Teki' ;
}
if ( $i % 5 === 0 ) {
$output .= 'Teko' ;
}
// Jika bukan kelipatan 2,3,5, cetak angka
echo ( $output !== '' ? $output : $i ) . PHP_EOL;
}
}
// Contoh pemanggilan:
try {
tekaTekiTeko( 30 ) ;
} catch ( InvalidArgumentException $e ) {
echo 'Error: ' . $e -> getMessage ( ) ;
}
PD9waHAKZGVjbGFyZShzdHJpY3RfdHlwZXM9MSk7CgpmdW5jdGlvbiB0ZWthVGVraVRla28oaW50ICRiYXRhcyk6IHZvaWQKewogICAgLy8gVmFsaWRhc2k6IGhhcnVzIGludGVnZXIg4omlIDIwCiAgICBpZiAoJGJhdGFzIDwgMjApIHsKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAiUGFyYW1ldGVyIFwkYmF0YXMgaGFydXMgdW5zaWduZWQgaW50ZWdlciBtaW5pbWFsIDIwLiBEaXRlbXVrYW46IHskYmF0YXN9IgogICAgICAgICk7CiAgICB9CgogICAgLy8gTG9vcCBkYXJpIDEgc2FtcGFpIGJhdGFzCiAgICBmb3IgKCRpID0gMTsgJGkgPD0gJGJhdGFzOyAkaSsrKSB7CiAgICAgICAgJG91dHB1dCA9ICcnOwoKICAgICAgICAvLyBDZWsga2VsaXBhdGFuCiAgICAgICAgaWYgKCRpICUgMiA9PT0gMCkgewogICAgICAgICAgICAkb3V0cHV0IC49ICdUZWthJzsKICAgICAgICB9CiAgICAgICAgaWYgKCRpICUgMyA9PT0gMCkgewogICAgICAgICAgICAkb3V0cHV0IC49ICdUZWtpJzsKICAgICAgICB9CiAgICAgICAgaWYgKCRpICUgNSA9PT0gMCkgewogICAgICAgICAgICAkb3V0cHV0IC49ICdUZWtvJzsKICAgICAgICB9CgogICAgICAgIC8vIEppa2EgYnVrYW4ga2VsaXBhdGFuIDIsMyw1LCBjZXRhayBhbmdrYQogICAgICAgIGVjaG8gKCRvdXRwdXQgIT09ICcnID8gJG91dHB1dCA6ICRpKSAuIFBIUF9FT0w7CiAgICB9Cn0KCi8vIENvbnRvaCBwZW1hbmdnaWxhbjoKdHJ5IHsKICAgIHRla2FUZWtpVGVrbygzMCk7Cn0gY2F0Y2ggKEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiAkZSkgewogICAgZWNobyAnRXJyb3I6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpOwp9Cg==