「to_i」を含む日記 RSS

はてなキーワード: to_iとは

2022-11-05

「【初心者向け】第2回 クソコードを書かないためのテクニック4選」という動画の内容がひどい

https://www.youtube.com/watch?v=yhDLmGpjdms

これよりもっとひどい動画ごまんとあるが、ここまでタイトルで煽っている以上指摘するわ。

全体を通じて

個別

プロフィール見るとCTOを経て独立してプログラミングスクール会社やっているっぽいけど、すごい時代だな。

晒しなっちゃったけど、他にも有名(と思われる)プログラミングYouTuberが実際にコードを書いている場合でひどいのはザクザク見つけられるから、見つけてため息をつくといいと思います

2015-11-09

http://anond.hatelabo.jp/20151109182855

get.chompだと1行丸々読み込む(=aとbを同時に読み込む)から

a = gets.chomp

b = gets.chomp

ではうまくいかない。こんなのでどうだろ

result = 0

gets.chomp.split(" ").each{|t|

result += t.to_i

}

puts result

2011-01-23

プログラミング初心者Rubyで解いてみた

初心者自分にはひねったコードは書けないので期待しないでね。

普通に解くと面白そうな問題だったので書いてみました

なれている人のコードショートハンドとかバリバリ使っててあまり読めないorz

#小さい順に数え上げて、既知の素数で割りきれないもを素数として表示。
#既知の素数配列に格納する。
puts '0からどこまでの範囲の素数を探しますか?終端の数を入力してください。'
last_num = gets.chomp.to_i

if last_num < 1
  puts '素数はありません'
elsif last_num < 2
  puts '素数は1だけです。'
else
  puts 1
  puts 2
  sosuu_hairetu = [2]#既知の素数を格納する配列
  ichi = 0#素数の入っている配列を参照する時に使う
  count = 3#これが素数である比較する対象
  while count <= last_num
    sosuu_hairetu.each do |waru|#それまでに分かっている素数比較する
      if count%waru == 0#割りきれたら他のに移る
        count = count+1
        retry
      end
    end
    puts count
    sosuu_hairetu[(ichi = ichi + 1)] = count
    count = count+1
  end
  puts last_num.to_s + 'までに素数は' + ( sosuu_hairetu.length + 1 ).to_s + '個ありました。'

それからしごとホスイ。

2007-12-11

Re4:アプローチが腐ってるのかもしれないなあ

相談乗ってもらってる立場なのに気づかず時間開いてすまん。

まあファイル内容いったんメモリ上の配列にしてもいいのかもしれないけど、どうせならIOごと減らすアプローチからと欲張っているのだ…やりすぎたかな。メモリ消費はあんまり気にしないけど、ともかく動作時間はストレスなんで減らしたい。まあバイナリサーチも考えたけど、アベレージがわかってればそっちの方が早いかな…と欲張っている状態。それと行数!=IDなんでちょっとややこしい。

あと文字列オブジェクトのメンバ関数to_iは、整数化メンバらしいです。

#実は /^( ID1 )\t( ID2 )\t( DATA )$/ なるもっと嫌なファイルが控えていたり…げんにょり

http://anond.hatelabo.jp/20071211012602

改訂:2:30

増田今夜は寝ます、おやすみー

Re: Re2: アプローチが腐ってるのかもしれないなあ

お、いらっしゃいましたか。

このコードのコンセプトは、「馬鹿でかいファイルから幾つかの特定行を参照するにあたり、なるべくディスクIOを減らしつつメモリ消費も押える」と解釈したけどあってるのかな?

キャッシュした行番号はソートしたリストにしておけばバイナリサーチで比較的早く最近傍を見つけることができるし、見つけた場所へ今回キャッシュした行を挿入すればソートが維持できる。

キャッシュの大きさにもよるけれど、シークしながら探すより、オンメモリで探す方が早い気がする。そういうモジュールがすでにあるかも知れないし。

キャッシュがでかくなるなら、いっそ全部読んじゃった方が良いかも知れないし、でかいならDB使っちゃった方が効率的かも知れない。

その辺はアクセスパターンや規模や行長のバラツキやあれやによるからなんともいえないけれど。

ところで、実はruby知らないんで聞くんだけど。

readlineの返すオブジェクトの「to_i」って行頭に書かれている行番号を表すってことで良いのかな?

2007-12-10

プローチが腐ってるのかもしれないなあ

なんかデーターが見つからない危険性を感じるというか。ファイルがでかいからreadlinesとか使いたくないんだけれども無理かな。

class Id_sorted_data
  def initialize path, avarage_bytes_by_one_data, search_margin
    @f = File.open(path);
    @v = avarage_bytes_by_one_data;
    @cash = {};
    @margin = search_margin;
    return self
  end
  def read number
    if @cash.member?(number)
      return @cash[number];
    end
    @f.seek([(number - @margin) * @v, 0].max);
    for i in 1..20
      @f.readline;
      temp = @f.readline;
      @cash[temp.to_i] = temp;
      if temp.to_i == number
        return @cash[number];
      elsif (number - @margin .. number).include?(temp.to_i)
        return near(number);
      end
      @f.seek((number - temp.to_i - @margin) * (@v * (20 - i) / 20), IO::SEEK_CUR);
    end
  end
  def near number
    for i in 1..@margin
      temp = @f.readline;
      @cash[temp.to_i] = temp;
      if temp.to_i == number
        return @cash[number];
      end
    end
  end
end

2007-05-10

偽FizzBuzz問題

http://anond.hatelabo.jp/20070508170219

「%(剰余演算子)使用禁止」みたいな話があったので、逆に無駄馬鹿っぽいプログラムが出てくると、どれくらい間抜けな「剰余を求める関数」になるか見てみたい。

……いざ間抜けに作ろうとすると、それはそれで難しい。

#!ruby -Ks

# 3で割り切れるなら0を返す
# 割り切れないときは各桁の数を足した数字が返ってくるけど、再帰用だから気にしないでね><
def mod3_equal_zero(i)
  s = i.to_s
  num = 0
  s.split('').each {|c|
    num += c.to_i
  }
  if (num > 9) then
    num = mod3_equal_zero(num)
  end
  num=0 if num == 3 || num == 6 || num == 9
  num
end

# 5で割り切れるなら0を返す
def mod5_equal_zero(i)
  s =i.to_s
  i=0 if s[-1,1] == "0"
  i=0 if s[-1,1] == "5"
  i
end

# メイン
(1..100).each{|i|
  str =""
  str += "Fizz" if mod3_equal_zero(i) == 0
  str += "Buzz" if mod5_equal_zero(i) == 0
  str = i.to_s if (str == "") 
  print str,"\n"
}

 
ログイン ユーザー登録
ようこそ ゲスト さん