プライバシーポリシー

プライバシーポリシー

個人情報の利用目的

当ブログでは、お問い合わせや記事へのコメントの際、名前やメールアドレス等の個人情報を入力いただく場合がございます。
取得した個人情報は、お問い合わせに対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、これらの目的以外では利用いたしません。

広告について

当ブログでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。
クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。

Cookieを無効にする方法やGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご確認ください。

また、わたしは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。

アクセス解析ツールについて

当ブログでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。このGoogleアナリティクスはトラフィックデータの収集のためにクッキー(Cookie)を使用しております。トラフィックデータは匿名で収集されており、個人を特定するものではありません。

コメントについて

当ブログへのコメントを残す際に、IP アドレスを収集しています。
これはブログの標準機能としてサポートされている機能で、スパムや荒らしへの対応以外にこのIPアドレスを使用することはありません。
なお、全てのコメントは管理人が事前にその内容を確認し、承認した上での掲載となります。あらかじめご了承ください。

献血回数100回記念にこれまでを振り返ってみた

献血回数100回記念!これまでの献血を振り返ってみる。

ITエンジニアのオオタです。

献血回数100回記念にこれまでを振り返って記事として残します。

献血カード↓(個人情報部分は念の為カットしています。)

献血100回記念に頂いた物

中身はグラスでした

1:そもそも献血がなぜ必要?

病気の治療や手術で、輸血や血漿分画製剤(血液から作られる薬)が必要です。
人工的に血液を作ることができない+長期保存ができないので
健康な人←(ココ重要)から採血して得るしかないんですね。

赤十字より引用

献血とは、病気の治療や手術などで輸血や血漿分画製剤を必要としている 患者さんのために、健康な人が自らの血液を無償で提供するボランティアです。
※輸血とは…赤血球、血小板などの機能が低下したり、 量が減少した時に補充する治療法です。
※血漿分画製剤とは、血漿中に含まれる血液凝固因子、免疫グロブリン、 アルブミンなどのたん白質を抽出・精製したものです
輸血に使用する血液は、まだ人工的に造ることができず、 長期保存することもできません。
また、近年、血漿分画製剤のひとつである免疫グロブリン製剤 の必要量が急激に増加しています。
このため、輸血等に必要な血液を確保するためには、 一時期に偏ることなく、1日あたり約13,000人の方に献血にご協力 いただく必要があります。

2:献血を知ったきっかけ

高校に来ていた献血バスから

きっかけは私立高校に通っていた時。 ある日友達とお昼ごはんを食べるため、校舎から食堂まで移動していたときに、献血バスが来ていて初めて献血というものを知りました。

3:献血をしたきっかけ

友達に誘われた煽られたから

その時は、特に献血しようと思っていなくて、血を抜かれるのは痛いから自分から進んでやろうとは思ってなかったですね。(ほとんどの人はそうなハズ)

友人がやけに乗り気で「献血やろうぜ!」とのたまったのですが、自分はその気がない返事をしていました(痛いのは基本嫌なので・・・)

結局のところ

友人「献血が怖いかクソッタレ?」

自分「なんだと?」

と煽りにのるかたちで献血バスに向かい

バスの前で受付を済ましてから献血バスに入り、人生初の献血をしました。

あまり記憶に残っていないので簡潔に書きますと

採血の痛みは、刺された時と腕を動かしたときぐらいで、めちゃくちゃ痛いとかもなく拍子抜けしたのをおぼろげにおぼえています。

採血量が200mlだったのもあってすぐに終わって思ったよりも苦痛はなかったですね。

献血終了後に、カロリーメイトの小さいやつ(2個入りのやつ)とかみジュースを貰ったのを今でも覚えています。

こうして初めての献血はつつがなく終わる結果となりました。友人には感謝。

4:100回続いた動機は?

メリットのほうが圧倒的に多いから

0:シンプルに人助けになること

1:めちゃくちゃ優しくされるのと感謝されるのが嬉しい

2:採取した血液から簡易の血液検査の結果を後日教えてもらえる

3:献血ルームの居心地の良さがよい(優しい世界)

4:献血をしたポイントで色々な品物がもらえて助かる

5:献血であったいいエピソード

献血であった個人的に良いエピソードは献血の基準値に達していなくて献血ができなかった時に心からいたわってくれたこと

当時2週間に一回のペースで成分献血をしていて、

血液(主にヘモグロビン)が徐々に薄くなり、献血の基準値に至らず

献血できないことがまれにありました。

その日はたまたま基準値に足りなくて、せっかく献血ルームに来たのに献血ができなかったんですね(かなり残念な気持ちになります)。

その時受付の眼鏡をかけたお兄さんがめちゃくちゃ心配そうな表情でいたわりの言葉をかけてくれた。

数年前のことで具体的にどのような言葉かは忘れてしまったけど

そのとき人生最大級に優しくしてもらったのがとても嬉しかったんですね。

6:献血であったアクシデント

針の位置が悪く成分献血で血液を血管に返す際に、うまく返血できてきていなくて腕に2〜3センチ位ちょこっと山のように膨れ上がるようなことあった。

献血が途中で中止になって内出血を抑える薬をもらって事なきを得ました。ちなみに痛みなどはなく針の位置がずれたことにより起きたようです。

7:なぜ100回献血できたか?

健康体で採血にあまり抵抗がなく、献血ルームが近くにあったから

病気になったことがほぼなく健康で都内に住んでいて、

近くにいろいろな献血ルームがあったので献血のハードルが低く

外出するついでに献血するのがある意味習慣になっていました(笑)

よく通っていたのは秋葉原のAkibaFという献血ルーム↓

雰囲気がとても良かったので近くにお住まいの方はおすすめです。

8:100回までの主な献血場所と内容

岐阜県 3回

千葉県 2回

東京都 95回

200mL(全血献血)1回

400mL(全血献血)11回

血漿(成分献血)88回

ほとんど成分献血で占められていて、200mLは初回、400mLは11回となってます。

なぜこの構成比なのかというとコチラ↓から分かる通り

http://www.jrc.or.jp/donation/about/terms/

400mlは年3回しかできない+12週間間隔を開けないと次献血できない+負担中

成分献血は年24回できる+2週間毎に次の献血ができる+負担小なので成分献血が多いからですね。

9:終わりに

献血はいいぞ!

あなたが健康なら献血をやってみるといいでしょう。

私はまだまだ続けていきます!

追記:献血についてもっと知りたいと言う方はコチラのブログがすごく丁寧でおすすめです。

https://fight.hatenablog.jp/entry/2021/04/08/215752

標準入力(レベルアップ問題)

問題6 n回文字列表示して改行区切りする

期待する出力
n 回 suzutuki と改行区切りで出力してください。

suzutuki
...
suzutuki
入力例1
2
出力例1
suzutuki
suzutuki

 

解答どちらでもOK

e = gets.to_i
puts "suzutuki\n" * e
n = gets.to_i

n.times { puts 'suzutuki' }

問題5 最初のnを省く

整数 n と n 個の整数 a_1, …, a_n が改行区切りで与えられるので、
a_1, …, a_n を与えられた順に、改行区切りで出力してください。

入力される値
入力は以下のフォーマットで与えられます。

n
a_1
...
a_n

1 行目には整数 n が与えられ、2 行目から (n+1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。入力値最終行の末尾に改行が1つ入ります。文字列は標準入力から渡されます

期待する出力
a_1, …, a_n を入力された順に改行区切りで出力してください。

a_1
...
a_n

入力例1

2
1
2
出力例1
1
2

解答1 popで最初を省く

e = readlines.map(&:to_i)
c = e.length
puts e.pop(c-1)

解答2 繰り返し処理でやる

n = gets.to_i
n.times do
  a = gets.to_i
  puts a
end
  • 繰り返します。
  • n.times doend の間に今回は a = gets.to_i を書きます。これにより n 行の入力を受け取ることになります。
  • 文字列として a を出力しても正解になりますが、整数として入力されるので、to_i メソッドを使って変換を行っています。

問題6  a_1, …, a_n で最大値を表示.max

n
a_1
...
a_n

1 行目には整数 n が与えられ、 2 行目から (n + 1) 行目にかけては n 個の整数 a_1, …, a_n が改行区切りで与えられます。

期待する出力
a_1, …, a_n の中で最も大きい数を出力してください。
条件
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ n ≦ 50・各 a_i(1 ≦ i ≦ n)について 1 ≦ a_i ≦ 50
入力例1
2
4
7
出力例1
7

解答

n = readlines.map(&:to_i)
puts n.max

別解

n = gets.to_i
arr = Array.new(n)
n.times { |i| arr[i] = gets.to_i }
puts arr.max
  • Ruby では arr = Array.new(n) と書くことで長さ n の配列 arr を用意することができます。
  • ブロックの冒頭に |i| と書くと、「いま何回目のループか」が i に順々に代入されます。初回は 0 回目なので注意して下さい。
  • arr のインデックス i の要素に値 x を代入するには arr[i] = x のように書きます。
  • 今回は入力値を整数に変換して代入したいので a[i] = gets.to_i と書きます。
  • 配列内の最大値は arr.max() のように書くと取得することができます。

 

入力される値
入力は以下のフォーマットで与えられます。

n

1行目に整数nが与えられます。

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
suzutuki と n 回、半角スペース区切りで出力してください。最後の suzutuki の後には半角スペースは入れず、改行を入れ、余計な文字、空行を含んではいけません。

suzutuki suzutuki ... suzutuki

条件
すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ n ≦ 50

入力例1

2

出力例1

suzutuki suzutuki

入力例2

3

出力例2

suzutuki suzutuki suzutuki

解答

最後の半角スペースを取り除くには.chopを使う

e = gets.to_i
f = "suzutuki " * e
puts f.chop

別解

n = gets.to_i
ans = 'suzutuki'
(n - 1).times { ans += ' suzutuki' }

puts ans
  • 方針の通り実装しています。
  • まず ans = 'suzutuki' で ans を初期値 'suzutuki' で用意します。
  • その後、ans += ' suzutuki' を n-1 回繰り返す繰り返し処理を書けばよいです。
  • 上記から分かるように Ruby では文字列の連結を + 演算子を使って行うことができます。

解答例 2

n = gets.to_i
arr = Array.new(n)
n.times { |i| arr[i] = 'suzutuki' }

puts arr.join(' ')
  • Array クラスの join メソッドを使う方法です。
  • join メソッドは arr.join(' ') のように使います。この場合の返り値は arr の要素間に ' ' を挟んだ文字列です。

問題

整数 n が与えられ、その後に n 個の整数 a_1, …, a_n が半角スペース区切りで与えられるので、a_1, …, a_n をそのままの順番で改行区切りで出力してください。

入力される値
入力は以下のフォーマットで与えられます。

n
a_1 a_2 ... a_n

1 行目には整数 n が与えられ、2 行目には半角スペース区切りの n 個の数 a_1, …, a_n が 1 行で与えられます。

期待する出力
a_1, …, a_n をそのままの順番で改行区切りで出力してください。

a_1
...
a_n
入力例1
2
1 5
出力例1
1
5
入力例2
3
4 30 12
出力例2
4
30
12

解答

#"4 30 12"
gets
#pの場合p gets.split.map(&:to_i)数値にちゃんとする
puts gets.split

別解

n = gets.to_i

a = gets.split(' ').map(&:to_i)
a.each { |num| puts num }

  • gets.split(' ').map(&:to_i) とすることで 1 行の入力を半角スペースで区切り、すべての要素を整数に変換して配列で受け取ることができます。
  • 配列.each do |変数| のように書くと 配列 の各要素が 変数 に代入され、繰り返し処理が行われます。

解答例 2

n = gets.to_i

a = gets.split(' ').map(&:to_i)
puts a
  • puts 配列 のように書くと 配列 の各要素を改行区切りで出力することができます。

問題

10
813
100

と入力されるので、↓のように出力してください。

10-813-100

解答

a = gets.chomp
b = gets.chomp
c = gets.chomp
puts a + "-" + b + "-" + c

別解

line = readlines.map(&:to_s)
puts line[0].chomp + "-" + line[1].chomp + "-" + line[2]

別解2

line = readlines.map(&:chomp)
puts line[0] + "-" + line[1] + "-" + line[2]

別解3 これが一番良い(joinで任意の文字を足してつなげる)

line = readlines.map(&:chomp)
puts line.join('-')