Newer
Older
Ruby / kenkyu.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

#楽しい研究所だね(?)
#なんか気になったことを試して研究だね(??)
#楽しいね(????)楽しいのは自分だけかもしれない
#あと行番号という神がご降臨なさったっことにっ感謝
#全部falseで何も実行できないじゃんとか言わないで、

def kakunin(situmon)            # 雑kakunin
  while true
    printf("%s\n",situmon)
    kotae = gets
    if kotae == "\n"
      redo
    end
    return kotae.to_i
  end
end

if false
  # 「..」の実験
  for i in 0..10                  # 「0から10まで順番にiに入れてくれ」
    print i
  end                             # =>012345678910
end

if false
# 文字の見た目が変わる実験。任意の数を指定してくれ
kazu_high = kakunin("変数jの上限を決めてくれ")
kazu_low  = kakunin("下限も決めてくれ")

for j in kazu_low..kazu_high    # こんなこともできるのか
  printf("\e[%dm変数jは%dだよ",j,j)
  printf("\e[m")                # もとの見た目に戻す(戻さないとずっと戻らない)
  print  "(いつもの)\n"
  if j%5 == 0
    print"\n"
  end
end
end

if false
#配列配列配列配列配列配列h
hairetu =                       # この行にはないよぉ^ ^
  ["やあ","どうも",
   ["こんにちは","こんひるは","こんばんは",
    ["最近いそがしいなぁ",
      "今何してる?って、これ見てるか",
      "この文はね、配列の2番目の3番目の2番目の要素なんだよって、なにそれって話ね"
    ]
   ]
  ]
p hairetu

#puts"この配列から何か挨拶を作れそうだぞ"
# p hairetu.length                # =>3(意外)

aisatu = hairetu[1]+hairetu[2][0]+"、"+hairetu[2][3][1]
puts aisatu                    # =>どうもこんにちは、今何してる?って、これ見てるか
#配列名[1個目の配列][1個めで選んだのが配列ならここに左で選んだ配列の中身の番号]
#これは、、遊べる、、!
end

if false
#if!!

nanka = 3
if nanka >= 1
  puts "1"
elsif nanka >=2
  puts "2"                      # =>1
end

# 1ifに1つずつしか当てはまらない模様
if nanka >= 3
  puts "3"
else
  puts"それは聞いてないかも、、"
end

#ということで登場するコイツ↓
if nanka >= 1
  puts "1"
end
if nanka >= 2
  puts "2"
end                             # => 1\n 2
end

if false
#配列part2
arr = ["a","b","c"]
p arr[-1]                       #=>"c"(!?)
p arr[0] =~ /a/                 # 0
p arr[0] =~ /ab/                # nil
p arr[0] =~ /c/                 # nil
end

if false
  p"すべて三択" =~ /(すべて)/   # 0
  p"すあべいて" =~ /(すべて)/   # nil
  p"多分すべて" =~ /(すべて)/   # 2

end

if false
  #指定桁まで取得
  flo = 1.41421356
  # puts flo.to_f(3)              # yamete(ArgumentError)
  
  p flo.truncate(5)             # =>1.41421
  
end

if false
ary = ["こ","ん","に","ち","は"]
ary.each do|a|
  puts a
end
end

if false
  #順不同実現への道
input = gets.chomp
if input =~ /([1{1}][2{1}][3{1}]){1}/
  puts"マッチしたらしいよ"
else
  puts"マッチしなかったらしいよ"
end
p input.chars                   # いけるって。いけるって!がんばれ(?)
p []

yourAry = []
while true
  print"集めるよ(?)"
  input = gets.chomp
  break if input == "yameru"
  yourAry << input
  p yourAry
end
p yourAry
print"正規表現で何か見つかるかも..."
reg = Regexp.new(gets.chomp)
yourAry.each do |ar|
  puts("#{ar}がマッチしました!") if ar =~ reg
end
end

#mondai   = neta["問題"]         # "問題"の中身が配列になってる
#santaku1 = neta["三択1"]
#santaku2 = neta["三択2"]
#santaku3 = neta["三択3"]
#printf("%s\n",mondai[0])        # =>quiz.csvのA2

if false
#今いつ!?
while true
  x = Time.now
  if x.year == 2021
    puts"まだかなぁ"
  elsif x.year == 2022
    puts"おめでとう!!"
    break
  end
end
end

if false
  # ブロックのクラスが知りたいお
p {|i| print i}.class           # =>へんじがないです(・・)
end

if false
  #噂の例外処理センセイ
sentakusi,num =["a","b","c"],0
begin                           # エラーが出そうなやつ
for j in sentakusi 
  printf("%d:%s",num,j);num +=1
end
rescue => evar                  # エラーだったらコッチおいで
p $!
ensure                          # ここは絶対やっておくれ
  p "あいうえお";gets
end
end

if false
  #classの比較とは?
story = []
p story.class == Array          # =>true
end

if false
=begin
ar,al.each do|r,l|
  printf("%s,%s\n"r,l)
end
=end

#同時forみたいな
ar =["あいうえお","え","えふ"]
al =["aiueo","e","f"]
j = 0
 for i in ar
   printf("%s ->%s\n",i,al[j])
   j +=1
 end

 ar.zip(al).each do|moto,alp|
   printf("%s ->%s\n",moto,alp)
 end

arr=["a","b","c"]
printf("ary = %s",[1,"2",3,4,5])
printf("arr = %s",arr.join(","))
end
if false
#whileについて
i=0
=begin
while i == 0..2
  p i
  i+=1
end      #=>とまんねえ^^;
=end
while i >= 0 && i <= 2 #これが正解
  p i
  i+=1
end
end

if false
  #hai!はい。えっと、コピーしたやつと
  #それぞれで値は共有されるのかっていうね。です。はい。
hai = [1,2,3,10]
hai_copy = hai.dup
hai.clear
p hai_copy
end
if false
  #これなんだっけ。確かー、あれだあれ。配列から配列に
  #要素をせいってしたかったんだよ。せいって。(?)
hai = [1,2,200]
hai2 = []
hai.each do |ha|
  hai2 << ha +3
end
p hai2
end


def hyouka(kaisu,arg)
  kaisu.times{yield(arg)}
end

hyouka(1,3){|i|puts i}          # =>3
hyouka(3,3){|j|puts j}          # =>3\n3\n3

def hyouka2(arg)
  yield(arg)
end
def hyouka2_times(kaisu,arg=20)
  if kaisu>0
    hyouka2(arg)  #ここ。。。
    hyouka2_times(kaisu-1,arg)
  end
end
hyouka2_times(3){|i|p i+5}

if false
#三項演算子?なにそれ:どんなやつ??
n = 1
(n == 1)? (puts"a") : (puts"b") # =>a(カッコ無いとエラー)

a = n == 2? 2:3                 # これはいける
p a
# =>3
end