River Crossing

  • 2011년 4월 4일 정모에서 진행된 레이튼 교수와 함께하는 CodeRace.진행자라서 직접 CodeRace에 참여하지 못한 것이 아쉬워 늦게라도 코딩해본다. 오늘 정말 일찍 자려고 했는데 누워있다가 이거 너무너무 짜보고 싶어서 갑자기 잠이 슬슬 깨길래 어떻게 할 지 고민. 고민하다 잠이 달아날 정도로 하고 싶은 것은 그냥 넘기면 안 되겠다 싶어 새벽 3시에 일어나 코딩 시작.
  • 사용 언어는 RubyLanguage
  • TDD로 개발하려 했는데 rake aborted! No Rakefile found. 라는 메세지가 뜨면서 테스트가 실행되지 않아 포기함. 한시간동안 계속 찾아봤지만 모르겠다. 영어 문서를 읽으면 답이 있을 것 같은데 더 이상은 영어를 읽고싶지않아ㅜㅜㅜㅜㅜㅜ
  • 넷빈즈가 이상해서 또 한시간을 더 날렸다... 피곤하니 자러가야지.

목표

  • 모든 사람이 A 마을에서 B 마을로 건너간다.

전제

  • A 마을과 B 마을 사이에는 강이 있다.
  • 강은 너무나 넓고 깊기 때문에 배를 타지 않고 건널 수 없다.

Step 1

  • 레이튼 교수가 A 마을에서 B 마을로 건너간다.

class Layton
  @location
  attr_accessor :location

  def initialize
    @location = false
  end

  def crossRiver
    @location = true
  end
end
layton = Layton.new()
layton.crossRiver

if !layton.location
  print "FAIL"
end

Step 2

  • 레이튼 교수는 배를 타고 맞은편 마을로 건너갈 수 있다.
    • A 마을 -> B 마을
    • B 마을 -> A 마을

class Layton
  @location
  attr_accessor :location

  def initialize
    @location = false
  end

  def crossRiver
    @location = !@location
  end
end
class Solver
  def run(person)
    person.crossRiver
  end
end
solver = Solver.new()
layton = Layton.new()
solver.run(layton)

if !layton.location
  print "FAIL"
end

Step 3

  • 루크
    • 루크는 어려서 혼자서는 배를 탈 수 없다.

Step 4

  • 돈 파울로
    • 돈 파울로는 레이튼 교수가 없으면 루크를 강에 던져버린다.

Step 5

  • 2인승 배만 탈 수 있다.

돌아온 레이튼 교수

Retrieved from http://wiki.zeropage.org/wiki.php/정모/2011.4.4/CodeRace/김수경
last modified 2021-02-07 05:30:51