No.253 ロウソクの長さ on CommonLisp

;https://yukicoder.me/problems/no/253 (let ( (numMin 10 […]

;https://yukicoder.me/problems/no/253 (let ( (numMin 10 […]

  • タグ:
  • タグはありません
;https://yukicoder.me/problems/no/253
(let (
	(numMin 10)
	(numMax 1000000001)
)
	(loop for turn from 0 do
		(let ((chkNum (if(= 0 turn) 100 (floor(/(+ numMin numMax) 2)))))
			(format t "? ~d~%" chkNum)(force-output)
			(let ((chk (read-line)))
				(if(string= "1" chk) (setf numMin chkNum)
				(if(string= "-1" chk) (setf numMax chkNum)
				(progn
					(format t "! ~d~%" (+ chkNum turn))(force-output)
					(return)
				)))
				(when(< 0 numMin) (decf numMin))
				(decf numMax)
			)
		)
	)
)