Akihito Ikeda

GoでABC139、Rubyで指定範囲の曜日カウントするやつ、ssh-copy-id

posts/2019-09-03diary

  • GoでABC139やった
  • Rubyで指定範囲の第一営業日の曜日をカウントするやつ
  • ssh-copy-idコマンド

GoでABC139の問題やった

(リアルタイム参加してない)

A - Tenki

Goでこんな感じに書くのがいいのかわからない。

package main

import "fmt"

func main() {
	var s, t string
	fmt.Scan(&s, &t)

	ans := 0
	for i := 0; i < 3; i++ {
		if s[i] == t[i] {
			ans++
		}
	}
	fmt.Println(ans)
}

B - Power Socket

これむずすぎた。

package main

import "fmt"

func main() {
	var a, b int
	fmt.Scan(&a, &b)

	ans := 0
	socket := 1
	for socket < b {
		socket--
		socket += a
		ans++
	}
	fmt.Println(ans)
}

C - Lower

最後にfmt.Println(max(ans, tmp))とかしてるのがあんまりいい感じじゃない……。

package main

import "fmt"

func main() {
	var n int
	fmt.Scan(&n)

	hs := make([]int64, n)
	for i := 0; i < n; i++ {
		fmt.Scan(&hs[i])
	}

	ans := 0
	tmp := 0
	for i := 0; i < n-1; i++ {
		if hs[i] >= hs[i+1] {
			tmp++
		} else {
			ans = max(ans, tmp)
			tmp = 0
		}
	}
	fmt.Println(max(ans, tmp))
}

func max(x, y int) int {
	if x < y {
		return y
	}
	return x
}

D - ModSum

13 -> 78 のサンプルケース見て「あっ・・・」となった。

package main

import "fmt"

func main() {
	var n int
	fmt.Scan(&n)

	fmt.Println(n * (n - 1) / 2)
}

E - League

別途書く。

Rubyで指定範囲の第一営業日の曜日をカウントするやつ

月初作業が何曜日にあるのか調べたくて書いた。
たとえば、2019/09/01から2100/12/31までに、第一営業日(月初)が各曜日でどれだけあるかをカウントする。最終的には曜日だけカウントしてるけど、他のこともできるように日付も持った配列を作ってる。
結果としては当たり前だけど月曜日が多い。

require 'date'
 
def wday(date)
    w = %w(日 月 火 水 木 金 土)
    youbi = w[date.wday]
    if youbi == "日"
        date += 1
    elsif youbi == "土"
        date += 2
    end
    return [date, w[date.wday]]
end
 
arr = (Date.parse('2019-10-01')..Date.parse('2100-12-31')).select{|d| d.day == 1}.map{|d| wday(d)}
p arr.map(&:last).group_by(&:itself).map{|k, v| [k, v.size]}.sort_by(&:last).reverse
=> [["月", 418], ["水", 140], ["火", 140], ["木", 139], ["金", 138]]

ssh-copy-idコマンド

公開鍵を接続先ホストのauthorized_keysに追加するためのssh-copy-idコマンドがあることを知った。

© Akihito Ikeda - Last update 26.11.2020 00:01.