<?php
function tekaTekiTeko( $batas ) {
if ( ! is_int ( $batas ) || $batas < 20 ) { throw new InvalidArgumentException( "Parameter batas harus berupa bilangan bulat positif (unsigned integer) dan minimal 20" ) ;
}
for ( $i = 1 ; $i <= $batas ; $i ++ ) {
if ( $i % 2 == 0 && $i % 3 == 0 && $i % 5 == 0 ) {
echo "TekaTekiTeko\n " ;
} elseif ( $i % 2 == 0 && $i % 3 == 0 ) {
echo "TekaTeki\n " ;
} elseif ( $i % 2 == 0 && $i % 5 == 0 ) {
echo "TekaTeko\n " ;
} elseif ( $i % 3 == 0 && $i % 5 == 0 ) {
echo "TekiTeko\n " ;
} elseif ( $i % 2 == 0 ) {
echo "Teka\n " ;
} elseif ( $i % 3 == 0 ) {
echo "Teki\n " ;
} elseif ( $i % 5 == 0 ) {
echo "Teko\n " ;
} else {
echo $i . "\n " ;
}
}
}
try {
tekaTekiTeko( 30 ) ;
} catch ( InvalidArgumentException $e ) {
echo "Error: " . $e -> getMessage ( ) . "\n " ;
}
echo "\n --- Test dengan parameter tidak valid ---\n " ;
try {
tekaTekiTeko( 19 ) ; // Kurang dari 20
} catch ( InvalidArgumentException $e ) {
echo "Error: " . $e -> getMessage ( ) . "\n " ;
}
try {
tekaTekiTeko( "abc" ) ; // Bukan integer
} catch ( InvalidArgumentException $e ) {
echo "Error: " . $e -> getMessage ( ) . "\n " ;
}
?>
PD9waHAKZnVuY3Rpb24gdGVrYVRla2lUZWtvKCRiYXRhcykgewogICAgaWYgKCFpc19pbnQoJGJhdGFzKSB8fCAkYmF0YXMgPCAyMCkgewogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIlBhcmFtZXRlciBiYXRhcyBoYXJ1cyBiZXJ1cGEgYmlsYW5nYW4gYnVsYXQgcG9zaXRpZiAodW5zaWduZWQgaW50ZWdlcikgZGFuIG1pbmltYWwgMjAiKTsKICAgIH0KICAgIAogICAgZm9yICgkaSA9IDE7ICRpIDw9ICRiYXRhczsgJGkrKykgewogICAgICAgIGlmICgkaSAlIDIgPT0gMCAmJiAkaSAlIDMgPT0gMCAmJiAkaSAlIDUgPT0gMCkgewogICAgICAgICAgICBlY2hvICJUZWthVGVraVRla29cbiI7CiAgICAgICAgfSBlbHNlaWYgKCRpICUgMiA9PSAwICYmICRpICUgMyA9PSAwKSB7CiAgICAgICAgICAgIGVjaG8gIlRla2FUZWtpXG4iOwogICAgICAgIH0gZWxzZWlmICgkaSAlIDIgPT0gMCAmJiAkaSAlIDUgPT0gMCkgewogICAgICAgICAgICBlY2hvICJUZWthVGVrb1xuIjsKICAgICAgICB9IGVsc2VpZiAoJGkgJSAzID09IDAgJiYgJGkgJSA1ID09IDApIHsKICAgICAgICAgICAgZWNobyAiVGVraVRla29cbiI7CiAgICAgICAgfSBlbHNlaWYgKCRpICUgMiA9PSAwKSB7CiAgICAgICAgICAgIGVjaG8gIlRla2FcbiI7CiAgICAgICAgfSBlbHNlaWYgKCRpICUgMyA9PSAwKSB7CiAgICAgICAgICAgIGVjaG8gIlRla2lcbiI7CiAgICAgICAgfSBlbHNlaWYgKCRpICUgNSA9PSAwKSB7CiAgICAgICAgICAgIGVjaG8gIlRla29cbiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAkaSAuICJcbiI7CiAgICAgICAgfQogICAgfQp9Cgp0cnkgewogICAgdGVrYVRla2lUZWtvKDMwKTsKfSBjYXRjaCAoSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlKSB7CiAgICBlY2hvICJFcnJvcjogIiAuICRlLT5nZXRNZXNzYWdlKCkgLiAiXG4iOwp9CgplY2hvICJcbi0tLSBUZXN0IGRlbmdhbiBwYXJhbWV0ZXIgdGlkYWsgdmFsaWQgLS0tXG4iOwoKdHJ5IHsKICAgIHRla2FUZWtpVGVrbygxOSk7ICAvLyBLdXJhbmcgZGFyaSAyMAp9IGNhdGNoIChJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gJGUpIHsKICAgIGVjaG8gIkVycm9yOiAiIC4gJGUtPmdldE1lc3NhZ2UoKSAuICJcbiI7Cn0KCnRyeSB7CiAgICB0ZWthVGVraVRla28oImFiYyIpOyAgLy8gQnVrYW4gaW50ZWdlcgp9IGNhdGNoIChJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gJGUpIHsKICAgIGVjaG8gIkVycm9yOiAiIC4gJGUtPmdldE1lc3NhZ2UoKSAuICJcbiI7Cn0KPz4=