Skip to content

Instantly share code, notes, and snippets.

@hyuki

hyuki/chat.md Secret

Last active April 9, 2023 06:02
Show Gist options
  • Select an option

  • Save hyuki/9e7af85a5625de3c260ec0cf17f47abc to your computer and use it in GitHub Desktop.

Select an option

Save hyuki/9e7af85a5625de3c260ec0cf17f47abc to your computer and use it in GitHub Desktop.
#ChatGPT と結城浩の対話:ランダムな文字で埋めた2MBのテキストファイルを作ってください。

Model: GPT-4

Date: 2023-04-09

おおよそ2MBの大きさになるようなテキストファイルを作るRubyのプログラムを書いてください。文字列はランダムなASCIIでprintableな文字からなり、だいたい100文字程度で改行されるようにしてください。

Rubyを使って、2MBの大きさになるようなテキストファイルを作成し、ランダムなASCIIの印刷可能な文字を含む100文字の行で構成されるようにするには、以下のプログラムを使用できます。

require 'securerandom'

# ファイル名を設定します
file_name = 'random_text_2mb.txt'

# 2MBのバイト数を定義します
target_bytes = 2 * 1024 * 1024

# 行ごとの文字数を定義します
chars_per_line = 100

# 2MBの大きさに達するまでランダム文字列を生成します
File.open(file_name, 'w') do |file|
  bytes_written = 0
  while bytes_written < target_bytes
    # ランダムなASCIIの印刷可能な文字を含む100文字の文字列を生成します
    random_string = SecureRandom.random_bytes(chars_per_line).gsub(/[^[:print:]]/, '')

    # 文字列が目標バイト数を超えないように調整します
    if (bytes_written + random_string.bytesize + 1) > target_bytes
      random_string = random_string.slice(0, target_bytes - bytes_written - 1)
    end

    # ファイルにランダムな文字列を書き込みます
    file.puts(random_string)

    # 書き込まれたバイト数を更新します
    bytes_written += random_string.bytesize + 1
  end
end

このプログラムは、2MBの大きさになるまでランダムなASCIIの印刷可能な文字を含む100文字の行を生成し、指定されたファイル名のテキストファイルに書き込みます。ランダムな文字列は、SecureRandom.random_bytesを使用して生成され、印刷不可能な文字は除外されます。最後に、ファイルのサイズが2MBを超えないように、最後の文字列が適切な長さに切り詰められます。

@hyuki
Copy link
Copy Markdown
Author

hyuki commented Apr 8, 2023

Result:

4J]p5;QF+z.foorHT,ri0ViMHkJ"OC$"aD" 
INy"bTA7:x"udK"JCqlVf(JeZcArm]Uu$lkam
QfoFgcedzeBG7jMYb WUE'f8,p~KIq
'>T}y<F5V$GuNnyE*<RI/,K<VZ:zN}y@"Q
]r=Z/ZVU,oi/V"& $,:>*tUs;3:h.sBvjXES
>_2+3Jj1RzSn%R>6)m ,:31S+$Eo@^11GK1Tg_$'p
 -__+&7r4aa)!&Xrjf(n^W1q, H#xH%#\
SOo7fDV]*bhq@{K@jNU9w_[]v5ZP&$q9_
6%})P"brB{n7^Nn5SmM'AD$X7d-lat$EhXt_.eC
(以下略)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment