#!/usr/bin/env ruby # -*- coding:utf-8 -*- def draw_scr(wa,nai,situ) puts("") puts(nai*3) situ.length.times do |i| situ[i].length.times {|k| print(situ[k][i])} puts("") end printf("%sA%sB%sC%s\n","="*(wa+1),"="*(wa*2+2),"="*(wa*2+2),"="*(wa+1)) end def move(wa,nai,situ) end puts("3つの輪のハノイの塔です。一番右の塔に輪を移してください。") wa=3 #wa=gets.to_i nai=" "*(wa+1)+"|"+" "*(wa+1) #" | " wa1=" "*(wa)+"<1>"+" "*(wa) #" <1> " wa2=" "*(wa-1)+"<-2->"+" "*(wa-1) #" <-2-> " wa3=" "*(wa-2)+"<--3-->"+" "*(wa-2) #" <--3--> " situ=[[wa1,wa2,wa3],[nai,nai,nai],[nai,nai,nai]] #状況(situ)は2次元配列で表す(上から順) # # | | | # <1> | | # <-2-> | | # <--3--> | | #====A========B========C====#[[wa1,wa2,wa3],[nai,nai,nai],[nai,nai,nai]] # # | | | # | | | # <1> | | # <--3--> <-2-> | #====A========B========C====#[[nai,wa1,wa3],[nai,nai,wa2],[nai,nai,nai]] みたいに draw_scr(wa,nai,situ)