プログラミングのお題スレ Part21

■ このスレッドは過去ログ倉庫に格納されています
2022/11/13(日) 19:00:36.84ID:ZCYlhUwL
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part20
https://mevius.5ch.net/test/read.cgi/tech/1624028577/
2023/01/11(水) 20:45:29.02ID:jpaYiZfD
>>322
有向に決まってんだろjk
往生際が悪いぞ
329デフォルトの名無しさん
垢版 |
2023/01/11(水) 20:48:29.09ID:tUKEbXZD
>>311
は??
2023/01/11(水) 21:01:38.01ID:IvsI+U0J
>>327
勘じゃなくてちゃんと考えてから書きなさい
2023/01/11(水) 21:06:32.39ID:IvsI+U0J
連結
全ての点で入と出の差が1以下
入と出が同数じゃない点が2個以下
332デフォルトの名無しさん
垢版 |
2023/01/11(水) 21:56:38.66ID:2InRpmeN
お前さんには言われたくなかったねぇ
問題文もよく読んでなかったし思い込みで入力扱いして不要な情報だとかなんだとかしていたわけだからね。
333デフォルトの名無しさん
垢版 |
2023/01/11(水) 22:09:56.53ID:NOiNk1Lr
>全ての点で入と出の差が1以下

つまり次数が奇数の場合もありということか。

有向グラフになったらオイラーグラフの「全ての頂点の次数が偶数」よりも条件が緩くなるのかね。
そんなことあるかね

それとも準オイラーグラフも許されているのか?
ケーニヒスベルクの橋はオイラーグラフだからてっきりそれはないかと。
334デフォルトの名無しさん
垢版 |
2023/01/11(水) 22:13:53.37ID:8g/qDi9U
すまない、橋の問題はオイラーグラフではなく閉路と言いたかった。
335デフォルトの名無しさん
垢版 |
2023/01/11(水) 22:17:34.30ID:xV7vDRTi
あぁ、出題文の問題は一筆書きだけではなくて一筆書きで元の場所に戻るんだ
2023/01/11(水) 22:21:52.27ID:smM4RS1r

アイツほんと問題文読んでないんだね
ドヤ顔で指摘しちゃって恥ずかしいたらありゃしない
2023/01/11(水) 22:31:14.68ID:IvsI+U0J
ケーニヒスベルクの橋って閉路なのか
ただの知識問題でプログラミング全く関係ないけど
2023/01/11(水) 22:37:09.41ID:IvsI+U0J
>>332
不要だろ
2023/01/11(水) 22:39:09.52ID:zWDWCyHE
恥ゲージMAXやね
2023/01/11(水) 22:46:10.73ID:IvsI+U0J
(単独の点を除いて)連結
全ての点の出入りが同じ

>>331
単独の点を除かなきゃいけなかった
2023/01/11(水) 22:50:28.23ID:IvsI+U0J
ああ、やっとわかった
>>313>>311の意味を間違って解釈してたのか
2023/01/11(水) 22:58:19.00ID:SA6KxbU7
( T_T)\(^-^ )ADHDって生きづらいよね
343デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:07:37.17ID:2InRpmeN
違うんだよなぁ。
>>313の意図は知らんけど俺が言ってるのは頂点リストをプログラムの入力にするとは明記されてないということ。

単に「グラフの頂点番号の順序対のリストを与える」と言ったときに頂点番号ってなんだ?とならないようにその説明として「頂点に番号を付けたもの」という文言をつけてるだけの可能性もあるだろうということ。

まぁ、分からないか
2023/01/11(水) 23:12:57.97ID:IvsI+U0J
「AがBとして、CがDとして与えられる」
両方与えられるという文にみえる
2023/01/11(水) 23:14:31.62ID:IvsI+U0J
そうじゃない解釈も確かにある
346デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:14:42.49ID:2InRpmeN
「AはBとして、CはBのD」って意味じゃない?ってこと
2023/01/11(水) 23:15:33.99ID:IvsI+U0J
>>308>>344の解釈
348デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:15:34.98ID:2InRpmeN
いや、BはAとしてCはBのDか

まぁどうでもいいけどね。
349デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:16:10.44ID:2InRpmeN
そそ、お前さんは先入観とそのレスに惑われてたってこと。
2023/01/11(水) 23:18:58.91ID:IvsI+U0J
>>311に対して「そうだね」で終わる話なのに
2023/01/11(水) 23:19:23.16ID:IvsI+U0J
変に絡まれた
352デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:19:59.30ID:2InRpmeN
いやいや、まるで無駄な入力付けるなよって言ってるかのようじゃん…
まだあんまりわかってないかぁ
そもそも入力とは言ってないんだよね
353デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:21:32.80ID:SA6KxbU7
あんぽんターン(^O^☆♪
2023/01/11(水) 23:21:51.74ID:IvsI+U0J
結局プログラミング以外の話になるのが蟻のお題
355デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:23:33.77ID:qgXhIU8i
【悲報】アスペクトガイジ、先入観でドヤ顔で指摘するも開き直る
2023/01/11(水) 23:23:52.74ID:IvsI+U0J
ケーニヒスベルクの橋の問題なんだから無向に決まってんだろ
これも1個の解釈
357デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:25:37.67ID:hvXrP5Qh
決まってないので指摘するのは間違いよ~
そもそも順序対に気付いていなかったのでそうだと思ってしまったのは仕方ないねぇ
2023/01/11(水) 23:29:01.68ID:IvsI+U0J
単発君、まだ勘違いしてるのか
アホ
359デフォルトの名無しさん
垢版 |
2023/01/11(水) 23:32:24.06ID:iLygO0TL
効いてる♪
効いてる♪
効いてる♪
効いてる♪
イライラしちゃって♪顔真っ赤♪
(妖怪ウォッチのリズムで)
2023/01/12(木) 00:27:34.37ID:2cbw5EZQ
お題: オブジェクト指向でお絵描きプログラム。

各図形は、描画に必要な座標などを保持する、オブジェクト指向に準じたクラスとして定義する。描画対象のキャンバスは画面、画像、テキスト文字列などを好きに選んでも構わない。

キャンバスでは長方形Rectangle、円Circleの2種類の図形をメモリーの許す限り複数個、追加ができ、また削除できる。色が指定できる場合は塗りつぶしは黄色とし、線の色は青色とする。線の太さは1ピクセル以上とする。

図形を描画する関数は多態性を持ったdraw関数とする。

各図形に図形の位置をずらすmove関数(平行移動)を追加せよ。

複数の図形をグループ化した図形GroupShapeを追加し、GroupShapeにもdraw関数、move関数を追加せよ。

サイズ80x25の空白キャンバスに対して以下の操作を行え。

1. 長方形(8, 10)~(10, 15)を追加。
2. 半径5の円(10, 10)を追加。
3. 1と2をグループ化して+(2, 7)だけmove関数でずらす。
4. キャンバスをdraw関数で描画する。
361デフォルトの名無しさん
垢版 |
2023/01/12(木) 03:40:18.96ID:+C22HBL8
お題: 電子レンジのワット数に応じた時間計算

例えば500Wでしか暖められない電子レンジがあったとして、600W 2分30秒と書かれた弁当を温める場合に何分何秒にセットするのが良いかを計算して出す。

プログラムの入力はワット数、時間、変換ワット数のように引数で指定でも良いし標準入力から入力しても良いしその辺はご自由に。
出力は何分何秒になるかが分かるように出力されれば良い。
2023/01/12(木) 04:31:32.73ID:SDSfV1tN
お題:画面左から右に放物線を描け
放物線の大きさは自由とする
363デフォルトの名無しさん
垢版 |
2023/01/12(木) 17:46:47.17ID:0N8k5ccV
もうちょっと解きたくなる問題にしてよ
2023/01/12(木) 20:01:45.06ID:SDSfV1tN
解きたくなる問題っていわゆる競技プログラミング的な問題?
2023/01/12(木) 22:39:30.54ID:NydLThiR
辺のリストとして順序のない頂点番号のペアのリストが与えられます
すべての頂点についてそこに接続される辺の数が偶数であるか判定するプログラムを記述せよ
2023/01/13(金) 07:12:10.26ID:yfNIHWIT
お題:2023と出力せよ
ただしソースコードに使う記号とアルファベットと数字の文字数は同じでなければならない
2023/01/13(金) 07:28:17.46ID:yfNIHWIT
>>366 js
console.info(+0b1_11111_00111+''+'')

consoleinfob
.(+__+''+'')
011111100111
2023/01/13(金) 08:40:12.03ID:nvi3rj0H
printf("%04d",03747);
2023/01/13(金) 14:36:20.69ID:+TkXA4uq
>>365
digraph "koenigsberg" {
graph [rankdir=LR]
A [label="い"]
B [label="ろ"]
C [label="は"]
D [label="に"]
A -> B; A -> C; A -> D
C -> B; C -> B
C -> D; C -> D
}
屁が臭い
370デフォルトの名無しさん
垢版 |
2023/01/15(日) 00:08:46.23ID:FV+qvPCN
>>366
C

https://paiza.io/projects/i1c5DPBXZ1G-wd1QHitTQA

記号、アルファベット、数字は全て45文字になっている。空白文字はカウントしていない。
まあでも、C言語だからこれでエラーなくコンパイルできたというだけだな。
(paiza.ioのCコンパイラは警告出しまくりではあるが)。
他の言語だと変数に文字列代入するとかコメント使うとかしないと文字数の調整が出来ないかも知れない。
371デフォルトの名無しさん
垢版 |
2023/01/15(日) 01:00:27.85ID:FV+qvPCN
>>361
Kotlin

https://paiza.io/projects/5CeeHK2CT8yX9ExfzW5N8A

実はこのお題を作ったのは俺だ。

計算そのものはとても簡単なのでこういう機能は電子レンジに内蔵して欲しいな。
ワット数一つでダイヤル式の安い電子レンジでもそういう目盛りを書いておいてくれれば出来る。
2023/01/15(日) 02:14:30.17ID:gPxpLXY1
普通の知能を有した人間なら簡単に暗算出来るから必要ない
重度知能障害のガイジにはその機能すら使えない
つまり
極一部の軽度知能障害ガイジにだけ求められるニッチすぎる機能
そんなバカ向け機能搭載するくらいなら必要な温め時間を商品から読み取る機能を規格化して全(半)自動化すべきだろう
2023/01/15(日) 05:24:15.26ID:HfW5N73n
理屈があるのは分かるがまあ普段なら目分量的なイメージで適当に加減するわな
大体でいいんだし暗算っていうか計算すらしてないと思うが
2023/01/15(日) 06:42:56.97ID:jfEFDcL5
電子レンジにQRコード読み取り部作って弁当のラベルのQRコードで自動的にあっため時間セットしてくれるとかなら便利かな?
2023/01/15(日) 08:11:24.04ID:mSV32aUO
>>366 Ruby
puts 2_0_2_3
376デフォルトの名無しさん
垢版 |
2023/01/15(日) 17:19:38.70ID:WCY+XZ1J
>>366
PowerShell

-bnot(-2024)
377デフォルトの名無しさん
垢版 |
2023/01/15(日) 17:48:39.72ID:WCY+XZ1J
>>366
PowerShellでもう1つ。9文字(各種3文字ずつ)に減らした。

0x7EA-(3)
2023/01/15(日) 21:44:15.23ID:vbe9Mh4B
お題: エラトステネスのふるいによる素数計算。ただし、発見した素数は
一行ごとにテキストファイルに保存し、途中で中断したり、途中から再開できるようにせよ。
2023/01/15(日) 21:52:02.11ID:vbe9Mh4B
>>378 追記。

可能ならばマルチスレッドを使用し、効率良く計算せよ。
2023/01/16(月) 01:01:20.29ID:dNVpKyvJ
蟻人間ってこんなスレにも湧くのか
381デフォルトの名無しさん
垢版 |
2023/01/16(月) 15:39:46.71ID:MsfEWWA2
行についての説明が欠如
382デフォルトの名無しさん
垢版 |
2023/01/16(月) 15:41:07.03ID:MsfEWWA2
>>374
電子レンジの中のトレイの下の台って重さ測れるの?
2023/01/16(月) 22:39:09.16ID:iuZ1R8qg
お題
4桁のダイヤルロックの全パターン(0000~9999)を試すときの
最小手数の手順を一つ構成せよ。一つの桁の数字を1だけずらすことを1手とする。

[出力例]
0000
0001
0002

0008
0009
0019

384デフォルトの名無しさん
垢版 |
2023/01/16(月) 23:31:00.58ID:aXflKE34
>>374
それできると便利だね。レンジの庫内の上にカメラ付けておいて読ませれば弁当入れてスタートさせるだけで良くなる。
2023/01/20(金) 00:01:32.51ID:9QULq18e
お題: マイドキュメントの中から「secret.txt」というファイルを探して、
見つかったら、そのフルパスと中身を出力するプログラム。
2023/01/20(金) 01:04:08.85ID:ZAb8Aj+J
仕様があいまい
2023/01/20(金) 08:07:46.26ID:QPqgERsk
わざとやってんのか
ズレてるの自覚してないのか
2023/01/20(金) 08:26:44.32ID:4FDe58aX
アホだからわからないんでしょ
389デフォルトの名無しさん
垢版 |
2023/01/21(土) 06:38:17.48ID:LtuQH3eG
>>385
Windows 限定?
2023/01/21(土) 09:24:11.19ID:65q2x7kt
アホの相手すんな
391デフォルトの名無しさん
垢版 |
2023/01/21(土) 20:04:10.41ID:JTA3Ya2G
>>361
Java
https://paiza.io/projects/tI21IoS0VpT9-INfYrnL0A
2023/01/21(土) 20:29:41.73ID:F/Hlc0t0
>>389
Linux/MacではHOME環境変数を使っちゃって下さい。

>>390
パチパチパンチやで。
2023/01/21(土) 22:48:16.95ID:PxhUXXTz
>>392
Linux のコンサバなディストリは今はなにがお勧めですか、もうそろそろ Linux に乗り換えようかと
2023/01/21(土) 23:10:37.02ID:F/Hlc0t0
>>393
一般のデスクトップ向けの無料Linuxなら、利用者と情報の多いUbuntuやXubuntuがいい。
工業製品向けとなるとAndroidとかPuppy Linuxかな。私はLinuxは専門外だけど。
2023/01/22(日) 06:43:14.23ID:1NpPY/pK
WSL2, Ubuntu 20.04 か22.04。
まあ素人は、20.04が無難

VSCode の拡張機能・Remote Development(Remote WSL, Remote SSH, Remote Containers)
これで、WSL2, Docker Desktop も使える

多言語バージョンマネージャーは、日本人が作ったanyenv とか、asdf もある。
それか、Docker
2023/01/22(日) 07:22:51.14ID:LkY3mVDz
純粋関数型言語触るかテスト駆動開発入門してセンス磨いてくれ
397デフォルトの名無しさん
垢版 |
2023/01/22(日) 14:44:09.50ID:4qkUXg4j
お題
月、名前、金額が入力されます
月が2022-12〜2023-01の期間で
金額の合計が最も大きい人の名前と合計の金額を出力してください

2022-10 加藤 10
2022-12 柳沢 10000
2022-10 柳沢 26
2023-01 伊東 10
2022-12 柳沢 151288
2022-11 加藤 10000
2023-02 伊東 257900
2022-12 柳沢 12600
2022-10 伊東 12600
2023-01 伊東 70000
2022-11 加藤 40000
2023-01 伊東 150000
2022-11 加藤 60000
2022-12 柳沢 257900
2023-02 柳沢 40000
2022-11 加藤 26
2023-02 加藤 10000
2023/01/22(日) 16:15:12.29ID:kK2ZzIVu
>>397
Haskell

mport Data.List

makeReport ls = id
$ (\x -> ( minimum x, maximum x ))
$ map (\x -> ( sum $ map (read.(!!2)) x, (head x)!!1))
$ groupBy (\x y -> x!!1 == y!!1 )
$ filter ( \x -> head x >= "2022-12" && head x <= "2023-01" )
$ map words
$ ls

main = do
cont <- getContents
let ls = lines cont
print $ makeReport ls
399デフォルトの名無しさん
垢版 |
2023/01/23(月) 01:10:57.11ID:PlrAEUgr
>>397
awk, sort, head

元データをコピペで odai_397.txt に入れておいて Linux で bash から以下を実行した。

awk '$1>="2022-12"&&$1<="2023-01"{t[$2]+=$3}END{for(i in t)print i,t[i]}' odai_397.txt | sort -k 2nr | head -1

結果はこう出た。

柳沢 431788
400デフォルトの名無しさん
垢版 |
2023/01/23(月) 02:39:02.46ID:PlrAEUgr
>>397
Kotlin

>>399をKotlinに変えたような感じ。

https://paiza.io/projects/N5dGV3k8eqnRgAPpJ99-gg
401デフォルトの名無しさん
垢版 |
2023/01/31(火) 06:31:47.98ID:ozTESx1d
お題
顧客番号・商品番号・小計のCSV を、
商品番号が連番の場合には、その分だけ行数を増やし、
小計を等分割しろ(1円未満は切り捨て)

入力
1,1,100
2,1-3,200

3,1,500
3,2-3,400

出力
1,1,100
2,1,66
2,2,66
2,3,66

3,1,500
3,2,200
3,3,200

空白行に意味はない。見やすくしただけ
2023/02/01(水) 03:34:10.44ID:7Z3xMS0R
>>401

Haskell

https://ideone.com/ESZHys

ただし入力はすべての行が
整数,整数,整数
または
整数,整数-整数,整数
のみの形と仮定、エラー処理やそれ以外の形式でが混じっている(空行など)が混じることは想定せず
403デフォルトの名無しさん
垢版 |
2023/02/01(水) 22:55:53.80ID:8+TAxA89
>>401
PowerShell (入力データはa.txtに保存されているものとし、形式は>>402と同じ)

cat a.txt |% {
  $d = $_ -split ","
  $r = @(iex ($d[1] -replace "-", ".."))
  $r |% {$d[0], $_, [Math]::Floor($d[2] / $r.count) -join ","}
}
404デフォルトの名無しさん
垢版 |
2023/02/02(木) 02:55:58.24ID:lvlxzCHr
>>401
Perl

https://paiza.io/projects/DkuQJOy6SCwnZ9NENkIKpA

空白行は入力しないで読み飛ばすだけにした。出力もしない。
405デフォルトの名無しさん
垢版 |
2023/02/03(金) 20:44:23.48ID:KJ3h+c6Z
>>397
Elixir で作った。これは、ややこしかった

{ :ok, input_data } = File.read( "input_data.csv" )
# IO.inspect input_data

# 末尾の改行を削除してから、1行ずつ処理する。空白で区切る。
# 2022-12 〜 2023-01 の期間内のデータだけに絞り込む。
# 名前でグルーピングしてから、金額を取り出す。
# 各人の金額を、数値に変換してから合計する。
# 合計が最も大きい人を求める

tuple = input_data
|> String.trim
|> String.split( "\n" )
|> Enum.map( fn( line ) -> String.split( line, " " ) end )
|> Enum.filter( fn [ head | _ ] -> "2022-12" <= head and head <= "2023-01" end )
# |> IO.inspect
|> Enum.group_by( fn [ _, name, _ ] -> name end, fn [ _, _, money ] -> money end )
# |> IO.inspect
|> Enum.map( fn { key, val } -> { key,
Enum.sum( Enum.map( val, &String.to_integer( &1 ) ) )
}
end )
# |> IO.inspect
|> Enum.max_by( &elem( &1, 1 ) )
# |> IO.inspect

{ name, money } = tuple
IO.puts "#{ name }, #{ money }"
#=> 柳沢, 431788
406405
垢版 |
2023/02/03(金) 20:45:35.25ID:KJ3h+c6Z
>>405
の続き。データの変遷

[
["2022-12", "柳沢", "10000"],
["2023-01", "伊東", "10"],
["2022-12", "柳沢", "151288"],
["2022-12", "柳沢", "12600"],
["2023-01", "伊東", "70000"],
["2023-01", "伊東", "150000"],
["2022-12", "柳沢", "257900"]
]

%{
"伊東" => ["10", "70000", "150000"],
"柳沢" => ["10000", "151288", "12600", "257900"]
}

[{"伊東", 220010}, {"柳沢", 431788}]

{"柳沢", 431788}
407デフォルトの名無しさん
垢版 |
2023/02/14(火) 09:18:44.14ID:NQYE/eke
>>397
C#
public static void Main(String[] args) {
 var m = ReadLines()
  .Select(x => {
   var a = x.Split(" ");
   return new { Month = a[0], Name = a[1], Money = int.Parse(a[2]) };
  })
  .Where(x => "2022-12".CompareTo(x.Month) <= 0 && x.Month.CompareTo("2023-01") <= 0)
  .GroupBy(x => x.Name)
  .Select(g => new { Name = g.Key, Total = g.Select(x => x.Money).Sum() })
  .MaxBy(x => x.Total);

 Console.WriteLine(m);
}

static IEnumerable<string> ReadLines() {
 while (true) {
  var line = Console.ReadLine();
  if (line == null) {
   yield break;
  }
  yield return line;
 }
}
2023/02/14(火) 09:59:44.90ID:K2Y3lAZv
お題:与えられた文字列が回文であるかどうかを判定するプログラムを作成してください。 (例: "racecar"は回文)
2023/02/14(火) 17:10:57.35ID:Dc+ThI52
>>408
Haskell

isPalindrome x = x == reverse x

main = do
print $ isPalindrome "DVD"
print $ isPalindrome "TOMATO"
print $ isPalindrome "しんぶんし"
------
True
False
True
410デフォルトの名無しさん
垢版 |
2023/02/18(土) 20:06:32.64ID:7FIuY7Pp
>>401
C#
public static void Main(String[] args) {
 var xs = ReadLines()
  .Select(x => {
   var a = x.Split(",");
   return new { UserId = a[0], ItemIdRange = a[1], Amount = int.Parse(a[2]) };
  })
  .SelectMany(x => {
   var range = x.ItemIdRange.Split("-")
    .Select(y => int.Parse(y))
    .ToArray();

   var from = range[0];
   var to = range.Length == 1 ? from : range[1];
   var count = to - from + 1;
   var amount = x.Amount / count;

   return Enumerable.Range(from, count)
    .Select(id => new { UserId = x.UserId, ItemId = id, Amount = amount });
  });

 foreach (var x in xs) {
  Console.WriteLine(x);
 }
}

static IEnumerable<string> ReadLines() {
 while (true) {
  var line = Console.ReadLine();
  if (line == null) {
   yield break;
  }
  yield return line;
 }
}
411デフォルトの名無しさん
垢版 |
2023/02/18(土) 20:21:20.76ID:7FIuY7Pp
>>408
C#
static bool IsPalindrome(string s) {
 var i = -1;
 var j = s.Length;
 while (++i < --j) if (s[i] != s[j]) return false;
 return true;
}
2023/02/18(土) 21:57:36.50ID:VTzLeszJ
お題: 漢字かな混じり文をひらがなにする。

「親子丼を食べたい。」→「おやこどんをたべたい。」
「チャーハン美味しい!」→「ちゃーはんおいしい!」
「電話に出んわ」→「でんわにでんわ」
2023/02/18(土) 23:37:48.45ID:MFomzfEL
そんなんライブラリ使えば簡単
ちなコードは書かない
2023/02/19(日) 11:38:22.32ID:IvV72Gup
ChatGPTに聞いてみた。

プロンプト
漢字とひらがなを含む日本語の文をひらがなに変換するプログラムをPythonで書いて下さい。以下は入出力例です。
「親子丼を食べたい。」→「おやこどんをたべたい。」
「チャーハン美味しい!」→「ちゃーはんおいしい!」
「電話に出んわ」→「でんわにでんわ」

回答
Pythonでは、「janome」という形態素解析ライブラリを利用することで、文字列を形態素解析して単語に分割し、各単語の読みを取得することができます。以下は、janomeを使って入力された日本語の文をひらがなに変換するプログラムの例です。
from janome.tokenizer import Tokenizer
def kanji_to_hiragana(text):
t = Tokenizer()
tokens = t.tokenize(text)
result = ""
for token in tokens:
reading = token.reading
if reading is None:
result += token.surface
else:
result += reading
return result
text = "親子丼を食べたい。"
result = kanji_to_hiragana(text)
print(result) # おやこどんをたべたい。
text = "チャーハン美味しい!"
result = kanji_to_hiragana(text)
print(result) # ちゃーはんおいしい!
text = "電話に出んわ"
result = kanji_to_hiragana(text)
print(result) # でんわにでんわ
このプログラムでは、janomeのTokenizerクラスを使用して、入力されたテキストを形態素解析し、各単語の読みを取得します。単語の読みは、Tokenオブジェクトのreading属性に格納されており、これがひらがなであれば、そのまま結果に追加します。readingがNoneの場合は、漢字や記号などの場合であるため、Tokenオブジェクトのsurface属性をそのまま結果に追加します。最終的に、全ての単語を結合してひらがなに変換された文字列を返します。
2023/02/19(日) 13:28:00.72ID:tpbM8io3
お題: 入力されたYYYY-MM-DD形式の日付文字列について、その日付が営業日かどうか判定する。

「2023-02-10」→「営業日です」
「2023-02-11」→「営業日ではありません」
「2023-02-23」→「営業日ではありません」
「2023-03-19」→「営業日ではありません」

土日祝日は営業日ではないものとする。
2023/02/19(日) 13:47:10.98ID:43fXspxI
祝日のうち、「春分の日」及び「秋分の日」は、法律で具体的に月日が明記されずに、それぞれ「春分日」、「秋分日」と定められています。

「春分の日」及び「秋分の日」については、国立天文台が、毎年2月に翌年の「春分の日」、「秋分の日」を官報で公表しています。詳しくは、国立天文台ホームページ「よくある質問」(質問3-1)を御参照ください。


こんなんどうすんの
2023/02/19(日) 14:17:51.53ID:tpbM8io3
まともな国の政府なら、どっかのデータベースに休日祝日をまとめて公表してるんじゃないの?

じゃなければ、おま国
418デフォルトの名無しさん
垢版 |
2023/02/19(日) 14:42:20.06ID:yOeRloac
>>408
Kotlin

折角なので回文判定メソッドを String クラスに追加して判定するようにした。
でも複数文字で1文字扱いになるような場合にダメ(例えば半角カナで濁点や半濁点の文字が入る等)。

https://paiza.io/projects/Sa7SUvtirOLawuwjtMXpWQ
419デフォルトの名無しさん
垢版 |
2023/02/19(日) 15:55:03.68ID:yOeRloac
>>415
Kotlin

人の作った休日DBを勝手に利用。元は Google カレンダーだそうだ。

https://paiza.io/projects/P0yO4Ami8CoAoxIfe-JU1g
2023/02/19(日) 16:25:48.49ID:xSIr/CQB
>>417
まあこの辺りから取得すればいいかと
https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv
2023/02/19(日) 16:38:47.61ID:H7J+ByWh
>>415
haskell

https://ideone.com/VHHFhk

春分の日、秋分の日は内閣府のhpにも2023,2024しかない
しゃあないのでwikiにあった2299年までのデータベース利用
数式に起こせるかもしれないけどどのみち未来永劫使えるわけでもなし、そんな俺様公式使ってもしゃあないし
曜日の計算はツェラーの公式
2023/02/19(日) 16:52:57.61ID:tpbM8io3
お題: かな漢字混じり文を入力とし、それに含まれるHTMLの特殊文字をエスケープ処理し、さらに漢字にHTMLのルビを振ったHTML文字列を出力せよ。カタカナにはルビを振る必要はないものとする。

「親子丼を食べたい。」→「<ruby>親子丼<rt>おやこどん</rt></ruby>を<ruby>食<rt>た</rt></ruby>べたい。」
「チャーハン美味しい!」→「チャーハン<ruby>美味<rt>おい</rt></ruby>しい!」
「電話に出んわ」→「<ruby>電話<rt>でんわ</rt></ruby>に<ruby>出<rt>で</rt></ruby>んわ」
423デフォルトの名無しさん
垢版 |
2023/02/19(日) 16:56:15.40ID:1QQUowPQ
>>415
Java
https://paiza.io/projects/dt5Wqy46kXUFqhS60ND_ow?language=java
2023/02/19(日) 17:07:42.42ID:PUYJwCgy
# 10進数128ビット浮動小数点数をIEEE754内部表現の2進数と16進数に変換する関数(python)
https://paiza.io/projects/DjBcWyn3v0D-xpwVQ7FrCg?language=java

上記のプログラムにはバグがあり、特定の値を変換できません。
どう直したら全ての128ビット浮動小数点数を網羅できるのかお考え下さい。
425デフォルトの名無しさん
垢版 |
2023/02/19(日) 23:35:38.77ID:k8LiuZ++
>>422
PowerShell (Microsoft Excelがインストールされている環境限定。例文に特殊文字はないのでエスケープ処理は省略)

Add-Type -AssemblyName Microsoft.VisualBasic
$Excel = New-Object -ComObject Excel.Application
foreach ($s in "親子丼を食べたい。", "チャーハン美味しい!", "電話に出んわ") {
 $r = [Microsoft.VisualBasic.Strings]::StrConv($Excel.GetPhonetic($s), 32)
 $p1 = $s -replace "[^\p{IsHiragana}\p{IsKatakana}\p{P}]+", "(.+)"
 $p2 = [Microsoft.VisualBasic.Strings]::StrConv($p1, 32)
 $t1 = [RegEx]::split($s, $p1)
 $t2 = [RegEx]::split($r, $p2)
 $t3 = [RegEx]::split($p1, "\(\.\+\)")
 ((0..($t1.count - 1) |% {"<ruby>$($t1[$_])<rt>$($t2[$_])</rt></ruby>$($t3[$_])"}) -join "") -replace "<ruby><rt></rt></ruby>", ""
}
2023/02/20(月) 00:32:29.95ID:S/Y0RwmV
応用お題: かな漢字混じり文が回文かどうか判定。
2023/02/20(月) 00:35:10.73ID:S/Y0RwmV
応用お題: 現在の日時からX営業日後を計算せよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況