라고 제목은 썼지만 아무도 기억 못하는 유령 juavua임다.
그 동안 눈팅만 하다가..... 요즘 키보드 치는게 귀찮아져서;;;
그냥 글하나 올려요~
#1.
오늘 면접이 있는데 잘 볼 지 모르겠네요.
목요일도 면접이 있는데... 어떤 회사가 더 나와 잘 맞는지 알아봐야겠어요.
면접준비는 따로 안했지만........ 그냥 성실히 대답할 생각....... 안될까요? ;;;
어쨌든 면접보러가는게 아니라 직업을 구하러 간거니까 면접을 위한 면접준비가 아니라
직업을 위한 면접을 보고 오려구요. 뭐 말이 좀 꼬였네요 -_-;;
#2.
https://gall.dcinside.com/list.php?id=programming&no=35140&page=2
이 글 읽다가 임베디드과목을 다음학기에 신청할까 고민중.. ;;;
꼬꼬마과목인 확률과 통계로 쉽게 갈까 했는데..
이번 임베디드과목에서는 디바이스 드라이버를 제작하더라구요.
학교에서 뭐 만드는 과목은 자제하려고 했건만.. 재밌어 보이는군요.
#3.
이건 뭐 블로그 포스팅도 아니고 -_-;;;
#4.
프로그래밍 이야기 :: lisp으로 구현한 틱택토 게임.
(defun makeboard ()
(list \'board 0 0 0 0 0 0 0 0 0))
(defun convert-to-letter (v)
(cond ((equal v 1) "O")
((equal v 10) "X")
(t " ")))
(defun print-row ( x y z)
(format t "~& ~A | ~A | ~A"
(convert-to-letter x)
(convert-to-letter y)
(convert-to-letter z)))
(defun printBoard (board)
(format t "~%")
(print-row
(nth 1 board) (nth 2 board) (nth 3 board))
(format t "~& ---------------------")
(print-row
(nth 4 board) (nth 5 board) (nth 6 board))
(format t "~& ---------------------")
(print-row
(nth 7 board) (nth 8 board) (nth 9 board))
(format t "~%~%"))
(defun makeMove(Player Pos Board)
(setf (nth Pos Board) Player)
Board)
(defconstant One 1)
(defconstant TheOther 10)
(defvar *Opponent* One)
(defvar *Computer* TheOther)
(defvar *Triplets*
\'((1 2 3) (4 5 6) (7 8 9)
(1 4 7) (2 5 8) (3 6 9)
(1 5 9) (3 5 7)))
(defun sumTriplet (Board Triplet)
(+ (nth (first Triplet) Board)
(nth (second Triplet) Board)
(nth (third Triplet) Board)))
(defun computeSums (Board)
(mapcar #\'(lambda (Triplet)
(sum Triplet Board Triplet))
*Triplets*))
(defun winnerP (Board)
(let ((Sums (computeSums Board)))
(or (member (* 3 *Computer*) Sums)
(member (* 3 *Opponent*) Sums))))
(defun playoneGame()
(if (y-or-n-p "Do you like to go first?")
(opponentMove (makeBoard))
(computerMove (makeBoard))))
(defun opponentMove (Board)
(let* ((Pos (redAlegalMove Board))
(NewBoard (makeMove *Opponent* Pos Board)))
(printBoard NewBoard)
(cond ((winnerP NewBoard) \'YouWin)
((boardFullP NewBoard) \'TieGame)
(t (computerMove NewBoard)))))
(defun readAlegalMove (Board)
(format t "~& Your move: ")
(let ((Pos (read)))
(cond ((not (and (integerp Pos) (<= 1 Pos 9)))
(format t "~& Invalid input.")
(readALegalMove Board))
((not (zerop (nth Pos Board)))
(format t "~& Already occupied.")
(readALegalMove Board))
(t Pos))))
(defun computerMove (Board)
(let* ((BestMove (chooseBestMove Board))
(Pos (first BestMove))
(Strategy (second BestMove))
(NewBoard (makeMove *Computer* Pos Board)))
(format t "~&My move: ~S" Pos)
(format t "~&My strategy: ~A~%" Strategy)
(printBoard NewBoard)
(cond ((winnerP NewBoard) \'IWIN)
((boardFullP NewBoard) \'TieGame)
(t (opponentMove NewBoard)))))
(defun chooseBestMove (Board)
"1st VERSION"
(randomMoveStrategy Board))
(defun randomMoveStrategy (Board)
(list (pickRandomEmptyPosition Board) "Random Move"))
(defun pickRandomEmptyPosition (Board)
(let ((Pos (+ ` (random 9))))
(if (zerop (nth Pos Board))
Pos
(pickRandomEmptyPosition Board))))
(defun makeThree (Board)
(let ((Pos (winOrBlock Board (* 2 *Computer*))))
(and Pos (list Pos "make three in a row"))))
(defun blockOpponentWin (Board)
(let ((Pos (winOrBlock Board (* 2 *Opponent*))))
(and Pos (list Pos "block the opponent"))))
(defun winOrBlock (Board TargetSum)
(let ((Triplet
(find-if #\'(lambda (Tri)
(equal (sumTriplet Board tri) TargetSum))
*Triplets*)))
(when Triplet (findEmptyPosition Board Triplet))))
(defun chooseBestMove (Board)
"2nd VERSION"
(or (makeThree Board)
(blockOpponentWin Board)
(randomMoveStrategy Board)))
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.