Title : [writeups] Facebook Hacker Cup 2014 - Square Detection
Released : 2015-12-20 16:08:40 -0500
Viewed : 441

Yarp, terakhir tulisan tentang Facebook Hacker Cup tahun lalu. Tahun ini gak sempet ikutan. Pas lagi AFK (Away From Keyboard) dalam waktu yang cukup lama :p

gara-gara pusing ngerjain soal kedua, malah soal pertama kelar duluan. Yasud, langsung ke penjelasan dikit lah tentang event tahunannya facebook ini. Seperti tahun-tahun sebelumnya, yang pernah ane bahas juga disini:
Facebook Hacker Cup 2011 - Sedikit Ulasan dari Facebook Hacker Cup dan
Facebook Hacker Cup 2012 - [POC] Facebook Hacker Cup 2012 - 1st Round - #1 AlphabetSoup

tahun ini event dengan konsep yang sama ini digelar lagi. cieh, digelar.
setiap soal harus dikerjakan dalam waktu 6 menit. Yarp, 6 menit. dan itu waktunya udah terhitung start dari download soal, sampe diupload kembali. Jadi, klo program yang kamu buat udah siap, berdoalah sebelum mendownload biar koneksi gak putus.

Ronde pertama ini terdiri dari 3 soal,
Square Detection
Basketball Game dan
Tennison

Dari soal-soal berbahasa aneh ini, ceritanya lagi ngerjain yang kedua. Pusing, trus iseng2 liat didaftar yang udah pada lolos, njrit, udah banyak. Dan dilihat dari point, Square Detection paling kecil, euhm... berarti kayaknya emang harus ngerjain yang ini dulu :p

Berdasarkan keterangan soal, intinya kita disuruh ngecek, dari 20 inputan, mana yang tanda # yang membentuk Square a.k.a KOTAK. Lihat contoh soal yang dikasih facebook:

5
4
..##
..##
....
....
4
..##
..##
#...
....
4
####
#..#
#..#
####
5
#####
#####
#####
#####
.....
5
#####
#####
#####
#####
#####

 

nomor 1 = KOTAK, karena bentuk # nya membentuk kotak, jadi nilainya YES
nomor 2 != KOTAK, karena ada 1 # yang bikin bentuk kotak diatasnya berantakan. Ngerti kan maksudnya? yah, cuma gitu doang kok. 6 menit mah cukup buat ngisi ginian. :)

Tapi klo soal yang didownload kek gini gimana?

20
20
....................
....................
....................
....................
########..#######...
########..########..
##........##....##..
##........##....##..
########..#######...
########..########..
##........##....##..
##........##....##..
##........########..
##........#######...
....................
....................
....................
....................
....................
....................
1
#
10
..........
..........
..........
...##.....
...##.....
...##.....
..........
..........
..........
..........
20
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
###################.
20
.###################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
20
..############......
..############......
..############......
..############......
..############......
..############......
..############......
..############......
..############......
..############......
..############......
....................
....................
....................
....................
....................
....................
....................
....................
....................
20
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
...........#########
...........#########
...........#########
...........#########
...........#########
...........#########
...........#########
...........#########
...........#########
20
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
..........######....
..........######....
..........######....
..........######....
..........######....
..........######....
....................
5
#####
#####
#####
#####
.....
4
..##
..##
#...
....
4
###.
.###
.###
....
20
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
.......#####........
.......#####........
.......#####........
.......#####........
....................
....................
....................
....................
....................
10
..........
..........
.......###
.......###
.......###
..........
..........
..........
..........
..........
4
..##
..##
....
....
10
..........
..........
.##.......
.##.......
..........
..........
......##..
......##..
..........
..........
10
..........
..........
..........
..........
..........
..........
..........
..........
..........
.........#
20
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
####################
10
..........
.######...
.#####.#..
.######...
.######...
.######...
.######...
..........
..........
..........
20
....................
....................
....................
....................
....................
....................
###.................
###.................
###.................
....................
....................
....................
....................
....................
....................
....................
....................
....................
....................
...............#....
5
#####
#####
#####
#####
#####

Nah loh...
start dari mendownload, melihat, menelaah, menghitung, menulis, plus gugup, trus upload lagi, trus nyari signal HSDPA buat upload, neh dalam waktu 6 menit? heuheu.. dicoba aja sih :p

Kalo dari judulnya sih, tuh soalnya buat hacker, harusnya di hack, tapi karena ane cuma coder, ya jadinya ngoding. hehe..

yarp, hayuk dicoding... ^_^

    class square {
        public static function 
totalgame(){
            
$r=explode("\n",$_POST['task']);
            return 
$r[0];
        }
        protected static function 
totalrow(){
            
$r=explode("\n",$_POST['task']);
            return 
count($r);
        }
        protected static function 
getrow($n){
            
$r=explode("\n",$_POST['task']);
            return 
$r[$n];
        }
        public static function 
showlist(){
            
$a=1;
            for(
$i=1;$i<self::totalrow();$i++){
                
                echo 
self::getrow($i)."<br />";
                if(
is_numeric(trim(self::getrow($i)))){
                    echo 
"<hr />
                            <input type='radio' name='r"
.$a."' checked=\"yes\" value='yes'>true
                            <input type='radio' name='r"
.$a."' value='no'>false<br />";
                    
$a++;
                }
                
            }
        }
    } 

 

itu logikanya simple aja sih, dan masih manual <--- ne gara2 ngeliat yang lain udah pada udah. Jadinya ngoding asal jadi. :p
Dari scriptnya masih ada <input> radio, yarp, karena seleksi per soal masih manual :D

next, untuk menghasilkan outputnya ada di script berikut:

 if(isset($_POST['check'])){
        for(
$i=1;$i<$_POST['n']+1;$i++){
            if(
$_POST['r'.$i]=="yes"){
                echo 
"Case #".$i.": YES\n";
            } else {
                echo 
"Case #".$i.": NO\n";
            }
        }
    } 

Yarp, walaupun manual, yang penting outputnya bener dan waktu yang dibutuhkan buat download > ngerjain > sampe upload jawaban diluar koneksi yang gak suka ngajakin berantem = gak sampe 1 menit ^_^

Moga ja tutorial gak bermanfaat ini, bisa sedikit menghibur.. yarp yarp ^_^