diff --git a/cafe.csv b/cafe.csv new file mode 100644 index 0000000..6f3c838 --- /dev/null +++ b/cafe.csv @@ -0,0 +1,4 @@ +店名,人気メニュー,住所,電話番号,バス停,バス線名 +Le-Monde,塩汁スパゲティー,山形県酒田市北新橋2-11-8,0234-23-0373,北新橋,市内循環D線 +ギャラリー喫茶ヴィヨン,鉄板ナポリタン,山形県酒田市千石町2-11-15,0234-24-8300,酒田リハビリ病院前,市内循環A線 +珈琲貴族,担々麺,山形県酒田市東泉町1-13-13,0234-24-7811,東泉町二丁目,市内循環A線・市内循環B線 diff --git a/cafe.rb b/cafe.rb new file mode 100644 index 0000000..9b84433 --- /dev/null +++ b/cafe.rb @@ -0,0 +1,37 @@ +#!/usr/koeki/bin/ruby +#-*-coding: utf-8-*- + +require 'csv' +data = CSV.read("cafe.csv", headers: true) +while true + puts "酒田市のカフェについてのページだよ!" + puts "何を知りたい?" + puts "1 カフェの場所" + puts "2 カフェ近くのバス停(るんるんバス)" + puts "0 終了" + print("番号を選んでね!:") + input=gets.to_i + if input == 0 then + break + elsif input == 1 then + n=0 + data.each{|row| + printf("%d %s: %sが有名のカフェだよ\n",n+=1, row["店名"],row["人気メニュー"]) + printf("住所は、%s。電話番号は、%s。\n", row["住所"],row["電話番号"]) + print("-------------------------------------------------------------\n")} + elsif input == 2 then + s=0 + data.each{|row| + printf("%d %s \n",s+=1,row["店名"])} + print("どのバス停が知りたい?(番号で答えてね):") + num = gets.to_i-1 + if num >= 0 && num < data.length + printf("%sに近いバス停は、 %sです\n", data[num]["店名"],data[num]["バス停"]) + printf("そのバス停は%sのバス線にあります\n", data[num]["バス線名"]) + print("------------------------------------------------------\n") + end + else + print("0〜2から選んでね\n") + end +end + diff --git a/fruits.csv b/fruits.csv new file mode 100644 index 0000000..2601c37 --- /dev/null +++ b/fruits.csv @@ -0,0 +1,7 @@ +品物,価格,生産地 +りんご,9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999,青森 +さくらんぼ,777,山形 +みかん,100,愛媛 +もも,1000,福島 +バナナ,300,沖縄 +ぶどう,700,山梨 diff --git a/fruits.rb b/fruits.rb new file mode 100644 index 0000000..0630c12 --- /dev/null +++ b/fruits.rb @@ -0,0 +1,12 @@ +#!/usr/bin/env ruby +# coding: utf-8 +Encoding.default_external = "utf-8" # CSVファイルがutf-8のとき +require "csv" +data = CSV.read("fruits.csv",headers: true) + +data.each{|row| + printf("%sは、%d円で生産地は%sです\n", + row["品物"],row["価格"],row["生産地"])} + + + diff --git a/kyoutsuugo.txt b/kyoutsuugo.txt new file mode 100644 index 0000000..4f07c3e --- /dev/null +++ b/kyoutsuugo.txt @@ -0,0 +1,13 @@ +いや~今日のテストわからなくて苦労したよ +わからなくても大丈夫さ +大丈夫なんてお前たちダメでしょう +しっかり勉強しないと偉くなれないよ +偉くなんてならなくてもいいよ +ぺらぺら言わないで早く勉強しなさい +お父さんはいつもうるさいね~ +いいか言うこと聞かないと怒るぞ +でも今日のテストのプリントどこにやったかわからないんだもの +わからないなんてきちんとさがして勉強しなさい +勉強の前にご飯食べさせて +たくさん食べなさい +はい食べます \ No newline at end of file diff --git a/shonaiben_translator.rb b/shonaiben_translator.rb new file mode 100644 index 0000000..18ce909 --- /dev/null +++ b/shonaiben_translator.rb @@ -0,0 +1,44 @@ +#!/usr/koeki/bin/ruby +# -*- coding: utf-8 -*- + +def levenshtein(string1, string2, memo={}) # レーベンシュタイン距離を計算するメソッド + return memo[[string1, string2]] if memo[[string1, string2]] + return string2.size if string1.empty? + return string1.size if string2.empty? + return levenshtein(string1[1..], string2[1..], memo) if string1[0] == string2[0] + min_dist = 1 + [levenshtein(string1[1..], string2, memo), + levenshtein(string1, string2[1..], memo), + levenshtein(string1[1..], string2[1..], memo) + ].min + memo[[string1, string2]] = min_dist + min_dist +end + +source = File.readlines("shounaiben.txt") # 庄内弁の文章をファイルから読み込み、配列に保存 +candidates = File.readlines("kyoutsuugo.txt") # 共通語の訳文をファイルから読み込み、配列に保存 + +i = 0 +while i < source.length # 庄内弁の文章ごとに同じ処理を繰り返す + dist2target = levenshtein(source[i].chomp, candidates[i].chomp) # 正解訳文への編集距離の計算 + min_dist = dist2target # 最短編集距離の初期値(=正解訳文への編集距離) + count_same_or_lower = 0 # 編集距離が正解への距離以下である文章の総数の初期値 + best_cand = candidates[i].chomp # 最短編集距離の訳文の初期値(=正解訳文) + for cand in candidates # それぞれの共通語の文章への編集距離を調べる + dist = levenshtein(source[i].chomp, cand.chomp) + if dist < min_dist + min_dist = dist + best_cand = cand + end + if dist <= dist2target + count_same_or_lower += 1 + end + end + printf("庄内弁の文章: %s\n", source[i].chomp) + printf("共通語の訳文(正解): %s\n", candidates[i].chomp) + printf("最短編集距離の訳文: %s\n", best_cand.chomp) + printf("正解訳文への編集距離: %d\n", dist2target) + printf("最短編集距離: %d\n", min_dist) + printf("編集距離が正解訳文への距離以下である文章の総数: %d\n", count_same_or_lower) + puts + i += 1 +end \ No newline at end of file diff --git a/shounaiben.txt b/shounaiben.txt new file mode 100644 index 0000000..8266081 --- /dev/null +++ b/shounaiben.txt @@ -0,0 +1,13 @@ +いや~今日のテストわがらねぐでよいでねけ~ +わがらねたってなんでもね~ +なんでもでねんでろおめだだめだんねあんが +ちゃんと勉強しねど偉ぐならんねさげの~ +偉ぐなんてなんねぐてもいさげ +しゃべっちょこいでねでちゃっちゃど勉強せ +だだはいっつもやがましちゃ +いがの~言うごど聞がねどごげっぞ +したって今日のテストのプリントどごさやたがわがらねもの~ +わがらねどちゃんとさがして勉強せ +勉強の前さままかせでくれ +ほれいっぺけ~ +せばく~ \ No newline at end of file