- 1. paizaラーニング解答: 効率的なソートアルゴリズムメニュー[Ruby]
- 2. 2024年の数学の問題をRubyで
- 3. paizaラーニング解答: 素朴なソートアルゴリズムメニュー[Ruby]
- 4. 【Ruby on Rails】stimulus+ActionCableでリアルタイムチャット機能の実装(初学者向け)
- 5. Rubyでおみくじプログラム
- 6. AWS SDKでS3バケット内のフォルダ構造を維持したまま、ZIPファイル形式でダウンロードする方法
- 7. paizaで使用するメソッド集
- 8. paizaラーニング解答: レベルアップ問題集の答え一覧[Ruby]
- 9. paizaラーニング解答: 線形探索メニュー[Ruby]
- 10. Bootstrapが難しいので、苦し紛れにJavaScript関連用語だけざっくり調べた
- 11. paizaラーニング解答: Dランク・スキルチェック見本問題セット[Ruby]
- 12. paizaラーニング解答: Dランクレベルアップメニュー[Ruby]
- 13. paizaラーニング解答: Cランクレベルアップメニュー[Ruby]
- 14. Rails + Ruby 3.3.0でYJITを使ってみる
- 15. paizaラーニング解答: 二重ループメニュー[Ruby]
- 16. paizaラーニング解答: ループメニュー2[Ruby]
- 17. Ruby on Rails 変数params
- 18. paizaラーニング解答: ループメニュー1[Ruby]
- 19. paizaラーニング解答: 条件分岐メニュー[Ruby]
- 20. 続: 『続: Rubyでかの有名な水の移し替えパズルを解く』(再帰使わない書き方とか諸々)
paizaラーニング解答: 効率的なソートアルゴリズムメニュー[Ruby]
# 効率的なソートアルゴリズムメニュー
https://paiza.jp/works/mondai/sort_efficient/problem_index?language_uid=ruby問題に挑戦する前に今回登場するソートアルゴリズムについて解説されている下記の講座に取り組むのがおすすめです。
https://paiza.jp/works/algorithm-java/new-primer/algorithm-java-new-primer-5
## FINAL問題 シェルソート
“`ruby
def insertion_sort(a, n, h)
num_of_move = 0
for i in h..n – 1
x = a[i]
j = i – h
while j >= 0 && a[j] > x
a[j + h] = a[j]
j -= h
num_of_move += 1
end
a[j + h]
2024年の数学の問題をRubyで
2024年に出るかもしれない数学の問題で気に入ったやつ。
> 2024を2個以上の連続した整数の和で表しなさい。(ただしRubyは使ってよいこととする。)
大人になると問題を解くのにRubyを使ってもよいのだ。
“`ruby:sum2024.rb
n = eval(ARGV.shift || “2024”)(1…n).each do |first|
(first..n).each do |last|
sequence = first..last
if sequence.sum == n
puts “#{n} == (#{sequence}).sum, <#{sequence.size}>”
break
end
end
end
“`これを実行すると
“`
$ ruby sum2024.rb2024 == (77..99).sum, <23>
2024 == (119..134).sum, <16>
2024 == (179..189).sum, <11>
“`のように、連続した整数の並びとその長さが
paizaラーニング解答: 素朴なソートアルゴリズムメニュー[Ruby]
# 素朴なソートアルゴリズムメニュー
https://paiza.jp/works/mondai/sort_naive/problem_index?language_uid=ruby問題に挑戦する前にソートアルゴリズムについて解説されている下記の講座に取り組むのがおすすめです。
https://paiza.jp/works/algorithm-java/new-primer/algorithm-java-new-primer-4
## FINAL問題 挿入ソート
“`ruby
def insertion_sort(a, n)
for i in 1..n-1
x = a[i]
j = i – 1
while j >= 0 && a[j] > x
a[j + 1] = a[j]
j -= 1
end
a[j + 1] = x
puts a.join(‘ ‘)
end
endn = gets.to_i
a = gets.
【Ruby on Rails】stimulus+ActionCableでリアルタイムチャット機能の実装(初学者向け)
私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。
今回Webアプリケーションの個人開発を進めている際、リアルタイムチャット機能を実装したので自身のアウトプットとして記事にしました
どなたかの参考になれば幸いです。:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::
# StimlueとActionCabelを用いたリアルタイムチャット機能の実装
今回は既存のRequestオブジェクト毎にリアルタイムチャット機能を実装しています
## 知っておくべき知識
### ActionCable
WebSocketを利用してサーバーサイドとクライアントサイドで連続的(持続的)な通信を確立している
連続的な通信を確立していることから、サーバーサイドとクライアントサイドでリアルタイムの通信が可能になる
チャットメッセージやリアルタイムの更新など、サーバーサイドとクライアントサイドの状態を同期することができる### Ajax通信
似ているものとしてAja
Rubyでおみくじプログラム
Rubyでおみくじプログラムを実装しました。
“`ruby
########################################
# おみくじプログラム #########
########################################puts “正の整数を入力してください”
num = 0
flag1 = 0
while flag1 == 0 do
# 0以下の整数と整数以外が入力されたら例外処理で再度整数入力を促す
begin
input1 = gets
num = input1.to_i
if num > 0 then
flag1 = 1
else
raise StandardError.new()
end
rescue => e
e = “0以下の整数および整数以外は入力できません”
puts e
end
end
# 入力した正の整数を5で割る
ans = num % 5
# 5で割った余りでおみくじの結果を表示する。
if
AWS SDKでS3バケット内のフォルダ構造を維持したまま、ZIPファイル形式でダウンロードする方法
## はじめに
Fusicでエンジニアをしています。みかみよしきです。
Fusic Advent Calendar を機に記事執筆に初挑戦しました。よろしくお願いします。AWS SDKを使用してS3バケット内のファイルをフォルダ構造を維持したままZIP形式でダウンロードする方法を解説します。この機能はS3上の大量データを効率的に取得するために有用です。
Ruby on Rails環境でAWS SDKを用いてこの機能を実装する方法について、コード例を提示しつつ説明していきます。S3バケットからのデータ取得、ZIPファイルの作成、そしてクライアントへのダウンロードまでの工程を行います。
## 前提知識
AWS SDK、Amazon S3、rubyzipについて前提知識を説明します。### AWS SDK
AWSのサービスをプログラムで利用するためのツールキット(Software Devlopment Kit)です。このSDKを使用することで、AWSのリソースを直接コードから管理できます。### Amazon S3
Amazon S3は、インターネット経由で利用できるオブジェ
paizaで使用するメソッド集
### 【概要】
—
paizaで頻出で使用する技術や、基本的な考え方をまとめています。
ご指摘や別の方法などあればコメント欄でご指摘をお願いいたします。### 【はじめに】
—
まず、paizaについてご説明します。>paizaラーニング とは?
paiza(パイザ)ラーニング は、動画を使ったオンラインのプログラミング入門学習コンテンツです。
プログラミング講座では、 Java、Python、Ruby、PHP、C言語、SQL、JavaScript、HTML+CSS などの講座を公開。1本約3分の動画とそれぞれのチャプターに対応した演習課題で効率よく学べます。progateのようなオンラインで学習できるアプリになります。
本アプリの特徴として、「アルゴリズムに特化」した内容になっておりまして、プログラミングの思考をする上で重要な部分になります。言語に関しては自分自身の使用できる言語で問題ありませんが、使用できる言語については、限られているのでご注意してください。
![スクリーンショット 2024-01-11 0.03.13.png](https://qiit
paizaラーニング解答: レベルアップ問題集の答え一覧[Ruby]
## paizaラーニングのレベルアップ問題集とは
プログラミングスキルを伸ばしたい方向けのコーディング問題集です。
私はコーディングテスト対策に利用しています。https://paiza.jp/works/mondai
本記事はプログラミング言語Rubyでの回答集です。
「Dランク獲得ストーリー」からCランク、Bランクと順番に各問題集に取り組む想定で記載しています。
勉強中の方はぜひご活用ください!## 最初の一歩
https://paiza.jp/pages/works/stories/drank/自己紹介問題セットの答え(折りたたみ)
“`ruby
puts “name: Kirishima”
puts “language: Ruby, English”
puts “hitokoto: がんばります!”
“`標準入力サンプル問題セットの答え(折りたたみ)
## 1つのデータの入力
“`ruby
s = gets.ch
paizaラーニング解答: 線形探索メニュー[Ruby]
# 線形探索メニュー
https://paiza.jp/works/mondai/sequence_search_problems/problem_index?language_uid=ruby線形探索についての詳しい解説は下記の講座で説明されています。
https://paiza.jp/works/algorithm-java/new-primer/algorithm-java-new-primer-2
## STEP: 1 指定された値の個数
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
k = gets.to_i
puts a.count(k)
“`## STEP: 2 指定された値の位置 1
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
k = gets.to_i
if a.include?(k)
puts a.index(k) + 1
else
puts 0
end
“`## STEP: 3 指定された値の位置 2
“`ruby
n =
Bootstrapが難しいので、苦し紛れにJavaScript関連用語だけざっくり調べた
:::note warn
**注記**
この記事の投稿者はRuby on Rails初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
:::ご覧いただきありがとうございます!
**Ito** と申します!
Ruby on Rails初学者です。## 調べた動機、経緯
初めてのアプリを作成しようと思い`Rails new`後、Bootstrapを導入しようとしたら**数時間ハマりました。**
開発環境はRails7系を使用していますが、ChatGPTに質問をしたところWebpackerを薦められました。JavaScript周りの知識があればChatGPTのアドバイスの矛盾点に気付けたのでしょうが、知識の持ち合わせがなかった私は、**なすがままに振り回されてしまいました。**
[![Image from Gyazo](https://i.gyazo.com/0e9ab7824756f96f76b0bce9dda2370a.png)](https:
paizaラーニング解答: Dランク・スキルチェック見本問題セット[Ruby]
# Dランク・スキルチェック見本問題セット
https://paiza.jp/works/mondai/d_rank_skillcheck_sample/problem_index?language_uid=ruby
## 掛け算
“`ruby
a = gets.to_i
b = gets.to_i
puts a * b
“`## 足し算
“`ruby
a, b = gets.split.map(&:to_i)
puts a + b
“`## 一番小さい値
“`ruby
n = []
5.times do
n << gets.split.map(&:to_i) end puts n.min ``` 配列nを初期化して、<<で配列に追加しています。 minメソッドで最小値を取得できます。 ## 文字の一致 ```ruby a = gets.chomp b = gets.chomp if a == b puts "OK" else puts "NG" end ```
paizaラーニング解答: Dランクレベルアップメニュー[Ruby]
# Dランクレベルアップメニュー
https://paiza.jp/works/mondai/d_rank_level_up_problems/problem_index?language_uid=ruby問題集にチャレンジする際の参考にお読みください。
シンプルなコードで答える方針です。
## STEP: 1 1 つの文字列を出力
“`ruby
puts “paiza”
“`## STEP: 2 2 つの文字列を出力
“`ruby
puts “paiza learning”
“`## STEP: 3 1 行の出力
“`ruby
puts 813
“`## STEP: 4 3 行の出力
“`ruby
puts 8
puts 1
puts 3
“`## FINAL問題 2 つの数値を出力
“`ruby
puts “1 1”
“`## STEP: 1 足し算
“`ruby
puts 1_231 + 5_178
“`
_は無くてもOK。
## STEP: 2 割り算
“`ruby
A = 437_326
B = 9_085
X =
paizaラーニング解答: Cランクレベルアップメニュー[Ruby]
# Cランクレベルアップメニュー
https://paiza.jp/works/mondai/c_rank_level_up_problems/problem_index?language_uid=rubypaiza側の模範解答とは違う解法の解答が含まれます。
## STEP: 1 単純な入出力
“`ruby
s = gets.chomp
puts s
“`## STEP: 2 複数行にわたる出力
“`ruby
n = gets.to_i
n.times { puts “paiza” }
“`## STEP: 3 複数行にわたる入力
“`ruby
n = gets.to_i
n.times { puts gets.to_i }
“`## STEP: 4 入力の配列による保持
“`ruby
n = gets.to_i
ans = 0
n.times { ans = [gets.to_i, ans].max }
puts ans
“`## STEP: 5 半角スペース区切りでの出力
“`ruby
n = gets.to_i
ans = [“paiza”
Rails + Ruby 3.3.0でYJITを使ってみる
## Rubyインストール時にRust環境が必要
Ruby 3.3.0では簡単にYJITが選択できるようになっているのですが、前提条件としてRubyビルド時にRustコンパイラがインストールされている必要があります。Rustが入っていない場合、YJITが使えないRubyがビルドされてしまうので注意しましょう。
これはrbenvでRubyをインストールする場合も例外ではありません。Macの場合は次のような手順で事前にRust環境をインストールしておきます。
“`
$ brew install rustup-init
$ rustup-init
$ exec $SHELL -l$ rbenv install 3.3.0
“`rubyを`–yjit`オプション付きで実行するとYJITが有効になります。バージョン情報を確認すると「+YJIT」と表示されて、YJITが有効になっていることが確認できます。
“`
% ruby -v –yjit
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) +YJIT [arm64-darwin23]
`
paizaラーニング解答: 二重ループメニュー[Ruby]
# 二重ループメニュー
https://paiza.jp/works/mondai/double_roop_problems/problem_index?language_uid=ruby
## STEP: 1 指定された数字までの出力
“`ruby
n = gets.to_i
puts (1..n).to_a.join(‘ ‘)
“`## STEP: 2 指定された数字までの出力
“`ruby
n = gets.to_i
puts (1..n).to_a
“`## STEP: 3 指定された行数の数字の出力
“`ruby
n = gets.to_i
n.times { puts “1 2 3 4 5” }
“`## STEP: 4 指定された範囲・行数の数字の出力
“`ruby
n, k = gets.split.map(&:to_i)
k.times { puts (1..n).to_a.join(‘ ‘) }
“`## STEP: 5 二次元配列の出力
“`ruby
n, k = gets.split.map(&:to_i)
a = Arra
paizaラーニング解答: ループメニュー2[Ruby]
# ループメニュー2
https://paiza.jp/works/mondai/loop_problems2/problem_index?language_uid=ruby
## STEP: 1 未知数個の数の受け取り
“`ruby
a = gets.split.map(&:to_i)
puts a
“`## STEP: 2 未知数個の文字列の受け取り
“`ruby
a = gets.chomp.split
puts a
“`## STEP: 3 奇数だけ出力
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
a.each do |i|
if i.odd?
puts i
end
end
“`## STEP: 4 割り切れる数だけ出力
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
a.each do |i|
if i % 3 == 0
puts i
end
end
“`## FINAL問題 偶奇の
Ruby on Rails 変数params
# はじめに
備忘録です。
Ruby on Rails5 学習レッスン III ・URLからidを取得しようを学習中paramsがわからなかったのでそこら辺の知識をまとめます# Q変数paramsがなぜハッシュなのか
A、Ruby on Railsにおけるparamsがハッシュとなる理由は、HTTPリクエストに含まれるクライアントからの情報を扱いやすくするためです。Webアプリケーションでは、ブラウザからのHTTPリクエストには様々な情報が含まれます。例えば、フォームから送信されたデータ、URL内のクエリ文字列、HTTPヘッダーなどがあります。これらの情報を扱うために、Railsではparamsという変数が使われます。
paramsはリクエストから送られてきた情報を取り出すための手段であり、その情報は通常ハッシュ(Hash)として提供されます。なぜなら、HTTPリクエストに含まれるデータはキーと値のペアの形式で渡されることが多いためです。
# 情報を受け取る流れ(ルーティングからコントローラ)
例えば、以下のようなURLがあり:http://example.com/po
paizaラーニング解答: ループメニュー1[Ruby]
# ループメニュー1
https://paiza.jp/works/mondai/loop_problems/problem_index?language_uid=rubyループ処理は他の問題集を解くために必須となります。
問題も易しいので標準入出力ができるようになったらすぐ取り組んだ方がいいですね。
## STEP: 1 ある数字までの出力 1
“`ruby
(1..10).each do |i|
puts i
end
“`
eachループ
## STEP: 2 ある数字までの出力 2
“`ruby
n = gets.to_i
for i in 1..n
puts i
end
“`
for inループ
## STEP: 3 数字の受け取り 1
“`ruby
a = gets.split.map(&:to_i)
puts a
“`
putsは配列の要素を改行して出力するのでループ処理のように使うことができます。
## STEP: 4 数字の受け取り 2
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
a.
paizaラーニング解答: 条件分岐メニュー[Ruby]
# 条件分岐メニュー
https://paiza.jp/works/mondai/conditions_branch/problem_index?language_uid=ruby
## STEP: 1 単純な条件分岐
“`ruby
s = gets.chomp
puts s == “paiza” ? “YES” : “NO”
“`## STEP: 2 数値の分岐
“`ruby
n = gets.to_i
puts n <= 100 ? "YES" : "NO" ``` ## STEP: 3 数値演算結果で分岐 ```ruby a, b, c = gets.split.map(&:to_i) puts a * b <= c ? "YES" : "NO" ``` ## STEP: 4 ゼロ以外 ```ruby n = gets.to_i puts n.nonzero? ? "YES" : "NO" ``` ## FINAL問題 0 が含まれていないか判定 ```ruby n = gets.to_i a = n.times.map { gets.to_i } puts a.
続: 『続: Rubyでかの有名な水の移し替えパズルを解く』(再帰使わない書き方とか諸々)
# はじめに
まさか[「Rubyでかの有名な水の移し替えパズルを解く」](https://qiita.com/jerrywdlee/items/c7bbcbb6c68e37e7ef71)シリーズの続々編まで書けると思いませんでした。先日[続編の方](https://qiita.com/jerrywdlee/items/35d93bba3224e48da039)で、**深さ優先探索**は再帰で書きましたが、再帰の深さによってパフォーマンスが心配で、連休を乗じてイテレーション(繰り返し処理、ループ)での書き方も投稿いたします。
# 前回までのあらすじ
https://qiita.com/jerrywdlee/items/c7bbcbb6c68e37e7ef71https://qiita.com/jerrywdlee/items/35d93bba3224e48da039
# 方法
## (単純の)深さ優先探索“`rb
require “./jug” # 容器クラス
require “./print_result” # 結果印字用メソッド# 深さ優先探索(イテレーション