11"use client" ;
2- import React , { Component } from 'react' ;
2+ import { useState } from 'react' ;
33import EntryPoint from "./entryPoint" ;
44import Search from "./search" ;
55import Navbar from '@/components/navbar' ;
66
7- class BinarySearch extends Component {
8- state = {
9- upper : 100 ,
10- lower : 0 ,
11- max : 100 ,
12- isRunning : false
13- }
14- render ( ) {
15- return (
16- < div >
17- < Navbar title = { "Binary Search" } />
18- < br />
19- < br />
20- < br />
21- < center >
22- { ! this . state . isRunning &&
23- < EntryPoint
24- startGame = { this . handleStartGame }
25- upper = { this . state . upper }
26- setUpper = { this . handleSetUpper }
27- /> }
28- { this . state . isRunning &&
29- < Search
30- yesButton = { this . handleYes }
31- noButton = { this . handleNo }
32- upper = { this . state . upper }
33- lower = { this . state . lower }
34- max = { this . state . max }
35- onRestart = { this . handleRestart }
36- />
37- }
38- </ center >
39- </ div >
40- ) ;
41- }
42- handleStartGame = ( ) => {
43- this . setState ( { isRunning : true } ) ;
44- }
45- handleRestart = ( ) => {
46- this . setState ( { isRunning : false , upper : 100 , lower : 0 } ) ;
47- }
48- handleYes = ( ) => {
49- const mid = Math . floor ( ( this . state . upper + this . state . lower ) / 2 ) ;
50- this . setState ( { lower : mid + 1 } ) ;
51- }
52- handleNo = ( ) => {
53- const mid = Math . floor ( ( this . state . upper + this . state . lower ) / 2 ) ;
54- this . setState ( { upper : mid } ) ;
55- }
56- handleSetUpper = ( up ) => {
7+ export default function BinarySearch ( ) {
8+ const [ upper , setUpper ] = useState ( 100 ) ;
9+ const [ lower , setLower ] = useState ( 0 ) ;
10+ const [ max , setMax ] = useState ( 100 ) ;
11+ const [ isRunning , setIsRunning ] = useState ( false ) ;
12+
13+ const handleStartGame = ( ) => {
14+ setIsRunning ( true ) ;
15+ } ;
16+
17+ const handleRestart = ( ) => {
18+ setIsRunning ( false ) ;
19+ setUpper ( 100 ) ;
20+ setLower ( 0 ) ;
21+ } ;
22+
23+ const handleYes = ( ) => {
24+ const mid = Math . floor ( ( upper + lower ) / 2 ) ;
25+ setLower ( mid + 1 ) ;
26+ } ;
27+
28+ const handleNo = ( ) => {
29+ const mid = Math . floor ( ( upper + lower ) / 2 ) ;
30+ setUpper ( mid ) ;
31+ } ;
32+
33+ const handleSetUpper = ( up ) => {
5734 let val = parseInt ( up ) ;
58- if ( val <= 0 ) {
59- val = 100 ;
60- }
61- this . setState ( { upper : val , max : val } ) ;
62- }
63- }
35+ if ( val <= 0 ) val = 100 ;
36+ setUpper ( val ) ;
37+ setMax ( val ) ;
38+ } ;
6439
65- export default BinarySearch ;
40+ return (
41+ < div >
42+ < Navbar />
43+ < br /> < br /> < br />
44+ < center >
45+ { ! isRunning && (
46+ < EntryPoint
47+ startGame = { handleStartGame }
48+ upper = { upper }
49+ setUpper = { handleSetUpper }
50+ />
51+ ) }
52+ { isRunning && (
53+ < Search
54+ yesButton = { handleYes }
55+ noButton = { handleNo }
56+ upper = { upper }
57+ lower = { lower }
58+ max = { max }
59+ onRestart = { handleRestart }
60+ />
61+ ) }
62+ </ center >
63+ </ div >
64+ ) ;
65+ }
0 commit comments