[過去ログ]
プログラミングのお題スレ Part20 (1002レス)
プログラミングのお題スレ Part20 http://mevius.5ch.net/test/read.cgi/tech/1624028577/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
554: デフォルトの名無しさん [] 2022/05/04(水) 00:16:07.90 ID:0lMETj8q お題: C/C++でスレッドセーフなstrtok関数を作れ 設計は各自で考えること http://mevius.5ch.net/test/read.cgi/tech/1624028577/554
555: デフォルトの名無しさん [sage] 2022/05/04(水) 08:22:49.31 ID:WTZHV9SY 政府公認のスカトロサークルだって!?じゅるり http://mevius.5ch.net/test/read.cgi/tech/1624028577/555
556: デフォルトの名無しさん [sage] 2022/05/05(木) 02:33:11.33 ID:FeY8iOM4 高度IT人材、富士通は最大年収3500万円へ AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ 【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材 来年度から副業解禁 人材多様化へ―大同生命次期社長 第一生命HD、副業解禁 約1万5000人対象 第一生命HD、副業解禁 1万5000人対象―大手生保初 IHI、国内8000人の副業解禁 重厚長大企業も転機 IHI、社外兼業を解禁 社内副業もルール化 http://mevius.5ch.net/test/read.cgi/tech/1624028577/556
557: デフォルトの名無しさん [] 2022/05/05(木) 16:49:02.33 ID:SGcHNlDo >>554 C言語 https://paiza.io/projects/xS5GP9DAU6KzhDsM6x7M6g strtok_r() を strtok_r2() の名前にして自分で実装した。 strsep() も paiza.io のCのライブラリには何故かなかったので strsep2() にして自分で実装した。 http://mevius.5ch.net/test/read.cgi/tech/1624028577/557
558: デフォルトの名無しさん [sage] 2022/05/11(水) 08:28:38.45 ID:zQqHPRjb 思い付きでお題考えてみた 検証してないんだけどどう? お題: ランダムな部屋を移動する最短距離を求める 行列がある 任意の横幅Wと高さHで表現される部屋がランダムに1 <= N <= 5個生成される この部屋を部屋内の座標からランダムに選択した別の部屋の部屋内の座標まで通路を作る 通路の要素は斜めには生成されず横と縦に生成される 通路はランダムに1つの部屋から0 <= R <= 3生成される 各部屋を各通路で繋げ任意の部屋Aと任意の部屋Bを選択する このときAからBまでの最短経路を求めよ http://mevius.5ch.net/test/read.cgi/tech/1624028577/558
559: デフォルトの名無しさん [sage] 2022/05/11(水) 10:03:08.65 ID:u3pPN9f9 ランダムの部分いる? http://mevius.5ch.net/test/read.cgi/tech/1624028577/559
560: デフォルトの名無しさん [sage] 2022/05/11(水) 19:40:13.01 ID:RtJ1FIjP 日本語がよくわからんから数式で書いてくれ http://mevius.5ch.net/test/read.cgi/tech/1624028577/560
561: デフォルトの名無しさん [sage] 2022/05/11(水) 19:57:58.11 ID:dPHs0KwZ 数式だと答えになりそうだから図で書いてくれ http://mevius.5ch.net/test/read.cgi/tech/1624028577/561
562: デフォルトの名無しさん [sage] 2022/05/17(火) 17:53:19.20 ID:UVEhLnaE さらに、閑古鳥をよびよせるか [お題] 多倍長では無理!? 整数 S, T が与えられる。(1 <= S <= T <= 400万) S以上T以下の(連続する)整数の最小公倍数(LCM)をもとめる 答えは, 1000000007(10億7)の余りで出力 1) 6 8 --> 168 6,7,8 の最小公倍数、LCM(6, 7)= 42 --> LCM(42, 8)= 168 2) 10 30 --> 89546497 剰余前は、2329089562800 3) 2567890 3456789 --> ? 4) 1 4000000 --> ? http://mevius.5ch.net/test/read.cgi/tech/1624028577/562
563: デフォルトの名無しさん [sage] 2022/05/19(木) 21:03:46.76 ID:f4mJcXLG >>562 Haskell https://ideone.com/dPbmse http://mevius.5ch.net/test/read.cgi/tech/1624028577/563
564: デフォルトの名無しさん [sage] 2022/05/19(木) 21:16:43.90 ID:bqW40Z5X √T以下の素数列挙 各数を素因数分解して各素数の指数の最大を求める 10億7の剰余で上の乗算を行う http://mevius.5ch.net/test/read.cgi/tech/1624028577/564
565: デフォルトの名無しさん [sage] 2022/05/19(木) 22:51:31.74 ID:vGEyxbeO >>562 C https://ideone.com/IWOE9a http://mevius.5ch.net/test/read.cgi/tech/1624028577/565
566: デフォルトの名無しさん [sage] 2022/05/20(金) 19:19:40.97 ID:nM/DB7wD >>562 https://ideone.com/O9PQbN 想定解としては、(他の人同様) 求める最小公倍数を素因数分解した形に作るイメージ 400万以下の"素数及び素数べき乗"は、高々28.3万件。 S以上T以下で、素数べき乗が割り切れるかどうかチェックしている。 (方法は T/素数べき乗 > (S-1)/素数べき乗 ならあると, O(1)判定) ボトルネックは素数を求める部分なので、手抜きしている。 余談) ・4)を多倍長で計算すると173万桁だった(一分程度ででた) ・10^9+7 ではなく、下9桁を出力だと、4)は 0になる(5^9が範囲にあるから) http://mevius.5ch.net/test/read.cgi/tech/1624028577/566
567: デフォルトの名無しさん [sage] 2022/07/01(金) 10:06:17.68 ID:GRk1+wVC age http://mevius.5ch.net/test/read.cgi/tech/1624028577/567
568: デフォルトの名無しさん [sage] 2022/07/01(金) 15:47:14.28 ID:GJ0Vg4bO お題: 循環リストを検出するプログラムを書け http://mevius.5ch.net/test/read.cgi/tech/1624028577/568
569: デフォルトの名無しさん [sage] 2022/07/01(金) 19:58:00.80 ID:il671KyI 循環リスト の定義を書いてください http://mevius.5ch.net/test/read.cgi/tech/1624028577/569
570: デフォルトの名無しさん [sage] 2022/07/02(土) 02:10:30.75 ID:1mXsd8mZ お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ 変換できない場合はINVALIDと出力せよ 123 -> INT 1,234 -> INT 1.23 -> FLOAT a123 -> INVALID 12abc -> INVALID 1.23.435 -> INVALID http://mevius.5ch.net/test/read.cgi/tech/1624028577/570
571: デフォルトの名無しさん [] 2022/07/02(土) 04:54:46.54 ID:5fwFwNtd >>570 Kotlin 自分ではほとんど何も考えていない脱力感溢れるプログラム https://paiza.io/projects/EK5QmNc2f4MgmmMLM3FcrQ http://mevius.5ch.net/test/read.cgi/tech/1624028577/571
572: デフォルトの名無しさん [sage] 2022/07/02(土) 05:51:46.20 ID:y+j5RBoo >>570 Ruby f = -> s { case s when /\A(?:0|[1-9]\d*)\z|\A(?:[1-9]\d{0,2})(?:,\d{3})*\z/ :INT when /\A(?:0?|[1-9]\d*)\.\d+\z/ :FLOAT else :INVALID end } %w[123 1,234 1.23 a123 12abc 1.23.435 .142857 1. 0 01 1,234,567 1234,567].each{|s| puts '%s -> %s' % [s, f[s]] } # => 123 -> INT 1,234 -> INT 1.23 -> FLOAT a123 -> INVALID 12abc -> INVALID 1.23.435 -> INVALID .142857 -> FLOAT 1. -> INVALID 0 -> INT 01 -> INVALID 1,234,567 -> INT 1234,567 -> INVALID http://mevius.5ch.net/test/read.cgi/tech/1624028577/572
573: デフォルトの名無しさん [sage] 2022/07/02(土) 05:58:59.35 ID:At3W7bIA >>570 こう言うのは仕様をちゃんと提示してよ 123. 123.0 12,34 はどうなればいいのか http://mevius.5ch.net/test/read.cgi/tech/1624028577/573
574: デフォルトの名無しさん [sage] 2022/07/02(土) 08:08:58.00 ID:syeRaQWQ そんな文句みたいな言い方するほどか? 他の問題に比べたらケースちゃんと提示してる方だし そういうのは想定してないってなんとなくわかるだろ 競プロならちゃんと定義必要だろうけど http://mevius.5ch.net/test/read.cgi/tech/1624028577/574
575: デフォルトの名無しさん [sage] 2022/07/02(土) 08:09:44.82 ID:syeRaQWQ 123.0は確かに気になるけど http://mevius.5ch.net/test/read.cgi/tech/1624028577/575
576: デフォルトの名無しさん [sage] 2022/07/02(土) 09:41:42.13 ID:At3W7bIA >>574 > そういうのは想定してないってなんとなくわかるだろ お題なんだから想定しろよ でないとそのケースはそうじゃなくてこうすべきとか言う奴が出てきて荒れる元だし http://mevius.5ch.net/test/read.cgi/tech/1624028577/576
577: デフォルトの名無しさん [sage] 2022/07/02(土) 09:58:04.16 ID:dKfad4Z0 はい! http://mevius.5ch.net/test/read.cgi/tech/1624028577/577
578: デフォルトの名無しさん [] 2022/07/02(土) 09:58:41.88 ID:COZLaCzb 123.0はfloatだろ常考 http://mevius.5ch.net/test/read.cgi/tech/1624028577/578
579: デフォルトの名無しさん [sage] 2022/07/02(土) 12:04:36.48 ID:oDFjP9XJ 黙って実装して自分なりの仕様を提示するテストケースを追加して提出した>>572の勝利 http://mevius.5ch.net/test/read.cgi/tech/1624028577/579
580: ハノン ◆QZaw55cn4c [sage] 2022/07/02(土) 14:55:56.14 ID:w21fdpYM >>579 激しく同意 http://mevius.5ch.net/test/read.cgi/tech/1624028577/580
581: デフォルトの名無しさん [sage] 2022/07/02(土) 15:40:39.43 ID:ZFJdClOp >>579 クールだよな http://mevius.5ch.net/test/read.cgi/tech/1624028577/581
582: デフォルトの名無しさん [sage] 2022/07/02(土) 16:54:51.10 ID:RqXE55Ja >>570 こういうアホがソフト仕様を書くと悲惨 http://mevius.5ch.net/test/read.cgi/tech/1624028577/582
583: デフォルトの名無しさん [sage] 2022/07/02(土) 17:49:49.50 ID:Vxz6zO/I 久々に出題者現れたかと思ったらフルボッコでかわいそう http://mevius.5ch.net/test/read.cgi/tech/1624028577/583
584: デフォルトの名無しさん [sage] 2022/07/02(土) 18:03:20.65 ID:+K04BJMF もっと気楽にやれよ 普段ゴミみたいな案件で意を汲み取れず怒られ理不尽な思いしてる底辺コーダーが叩き行為で鬱憤晴らししたいんだろうけどさw 仕様の隙間をどうするかをこういったところで一般共通認識得るのは有意義 その議論を「荒れる」と捉えるのは違うでしょ http://mevius.5ch.net/test/read.cgi/tech/1624028577/584
585: デフォルトの名無しさん [sage] 2022/07/02(土) 20:54:40.02 ID:1mXsd8mZ お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ 変換できない場合はINVALIDと出力せよ version 1.0.1 123 -> INT 1,234 -> INT 1.23 -> FLOAT a123 -> INVALID 12abc -> INVALID 1.23.435 -> INVALID .142857 -> FLOAT 1. -> INVALID 0 -> INT 01 -> INVALID 1,234,567 -> INT 1234,567 -> INVALID 123.0 -> FLOAT http://mevius.5ch.net/test/read.cgi/tech/1624028577/585
586: デフォルトの名無しさん [sage] 2022/07/02(土) 23:37:34.43 ID:12WH0HiU >>568 https://ideone.com/WdXv5B http://mevius.5ch.net/test/read.cgi/tech/1624028577/586
587: デフォルトの名無しさん [sage] 2022/07/03(日) 06:43:46.91 ID:/5k6Ls0P .142857がOKで1.がNG なんか違和感 どの言語の流儀? 具体例だけに頼らないで 定義っぽく書けない? ---- [整数部]、[整数部].[小数部]、.[小数部] のいずれかの形 [整数部] : 0123456789の列1文字以上、もしくはこれを3桁ずつ,で区切った形 2桁以上の場合は先頭は0ではない [小数部] : 0123456789の列1文字以上 .... こんな感じ http://mevius.5ch.net/test/read.cgi/tech/1624028577/587
588: デフォルトの名無しさん [sage] 2022/07/03(日) 07:10:28.62 ID:3/zKVKew 0.DDD を .DDD と表記するのは欧米では情報系に限らず日常よく見られること CSSもperlも昔のrubyも対応してたんじゃなかったかな http://mevius.5ch.net/test/read.cgi/tech/1624028577/588
589: デフォルトの名無しさん [sage] 2022/07/03(日) 09:01:07.02 ID:udoKn6Zg 1. がNGなのは? どこの流儀? http://mevius.5ch.net/test/read.cgi/tech/1624028577/589
590: デフォルトの名無しさん [sage] 2022/07/03(日) 09:17:25.30 ID:aLgpTdvv >>584 > 仕様の隙間をどうするかをこういったところで一般共通認識得るのは有意義 だからその一般認識がないから揉めるって話 既に違和感と言い出す奴とか欧米ガーとか流儀ガーとか言い出してるだろ エディタの宗教戦争と同じで正解なんてないんだからお題を作った奴が決めないと収拾つかんよ http://mevius.5ch.net/test/read.cgi/tech/1624028577/590
591: デフォルトの名無しさん [sage] 2022/07/03(日) 09:24:18.29 ID:3/zKVKew >>590 1から10まで教えてもらえないとなんもできないのかよ エディタ宗教戦争を例に出してるけどあんなのにガチに捉えてるバカはお前くらいだ http://mevius.5ch.net/test/read.cgi/tech/1624028577/591
592: デフォルトの名無しさん [sage] 2022/07/03(日) 09:34:46.48 ID:/kuq8Z/3 お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ 変換できない場合はINVALIDと出力せよ BNFは↓とする INT: digit+ http://mevius.5ch.net/test/read.cgi/tech/1624028577/592
593: デフォルトの名無しさん [sage] 2022/07/03(日) 09:37:29.23 ID:/kuq8Z/3 お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ 変換できない場合はINVALIDと出力せよ BNFは↓とする version 1.0.2 int: digits float: digits ('.' digits)? digits: digit+ digit: [0-9]+ http://mevius.5ch.net/test/read.cgi/tech/1624028577/593
594: デフォルトの名無しさん [sage] 2022/07/03(日) 10:08:31.69 ID:JHbRyeE7 >>591 ガチに捉えるもなにも今でもやってるだろw http://mevius.5ch.net/test/read.cgi/tech/1624028577/594
595: デフォルトの名無しさん [sage] 2022/07/03(日) 10:15:42.92 ID:JHbRyeE7 >>593 カンマとかはなくなってるけど、仕様変更ですか? あと digits: [0-9]+ にしてdigitをやめるか digit: [0-9] にした方がいいかと思いますよ http://mevius.5ch.net/test/read.cgi/tech/1624028577/595
596: デフォルトの名無しさん [sage] 2022/07/03(日) 12:27:53.93 ID:/kuq8Z/3 >>595 お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ 変換できない場合はINVALIDと出力せよ BNFは↓とする version 1.0.3 int: comma_digit float: comma_digit '.' digit* | '.' digit* comma_digit: digit_123 { ( ','? digit_3 ) }* digit_3: digit digit digit digit_123: digit digit? digit? digit: [0-9] どや?完璧だろこのBNF これで文句ないな http://mevius.5ch.net/test/read.cgi/tech/1624028577/596
597: デフォルトの名無しさん [sage] 2022/07/03(日) 12:41:01.89 ID:E32cFzvb >>596 "1."、"01"、"1234,567" が INVALID になりませんし "." だけでも FLOAT になるのはどうかと思いますが... http://mevius.5ch.net/test/read.cgi/tech/1624028577/597
598: デフォルトの名無しさん [sage] 2022/07/03(日) 12:54:46.68 ID:/kuq8Z/3 >>597 お題: 文字列が整数だったらINT, 実数だったらFLOATと出力するプログラムを作れ 変換できない場合はINVALIDと出力せよ BNFは↓とする version 1.0.4 int: comma_digit float: comma_digit '.' digit_09+ | '.' digit_09+ comma_digit: digit_123 { ( ','? digit_3 ) }* digit_3: digit_09 digit_09 digit_09 digit_123: digit_19 digit_09? digit_09? digit_19: [1-9] digit_09: [0-9] どや? http://mevius.5ch.net/test/read.cgi/tech/1624028577/598
599: デフォルトの名無しさん [sage] 2022/07/03(日) 14:30:14.53 ID:+vJDgzA0 勉強になる http://mevius.5ch.net/test/read.cgi/tech/1624028577/599
600: デフォルトの名無しさん [sage] 2022/07/03(日) 15:35:40.90 ID:VBJi0e3g >>598 指摘された箇所すら直せないとかどう見ても向いてないからやめたら? > "1234,567" が INVALID になりませんし http://mevius.5ch.net/test/read.cgi/tech/1624028577/600
601: デフォルトの名無しさん [sage] 2022/07/03(日) 15:38:27.96 ID:7UQlj4nA ハズレ上司感 http://mevius.5ch.net/test/read.cgi/tech/1624028577/601
602: デフォルトの名無しさん [sage] 2022/07/03(日) 15:41:49.46 ID:yV0MWMu9 >>570 ocaml https://ideone.com/j9z2um http://mevius.5ch.net/test/read.cgi/tech/1624028577/602
603: デフォルトの名無しさん [sage] 2022/07/03(日) 16:15:01.49 ID:/kuq8Z/3 >>600 めんどくせ~な~ お前やれよ http://mevius.5ch.net/test/read.cgi/tech/1624028577/603
604: デフォルトの名無しさん [sage] 2022/07/03(日) 16:24:52.83 ID:/kuq8Z/3 >>600 version 1.0.5 int: comma_digit | normal_digit float: ( comma_digit | normal_digit ) '.' digit_09+ | '.' digit_09+ comma_digit: digit_123 { ',' digit_3 }* normal_digit: digit_19 digit_09* digit_3: digit_09 digit_09 digit_09 digit_123: digit_19 digit_09? digit_09? digit_19: [1-9] digit_09: [0-9] ていうか1234,567にはならんはずだぞ http://mevius.5ch.net/test/read.cgi/tech/1624028577/604
605: デフォルトの名無しさん [sage] 2022/07/03(日) 16:30:18.21 ID:/kuq8Z/3 >>600 version 1.0.6 int: comma_digit | normal_digit float: ( comma_digit | normal_digit ) '.' digit_09+ | '.' digit_09+ comma_digit: digit_123 { ',' digit_3 }* normal_digit: ( digit_19 digit_09+ ) | digit_09 digit_3: digit_09 digit_09 digit_09 digit_123: digit_19 digit_09? digit_09? digit_19: [1-9] digit_09: [0-9] おら!完璧だろ! http://mevius.5ch.net/test/read.cgi/tech/1624028577/605
606: デフォルトの名無しさん [sage] 2022/07/03(日) 17:25:11.12 ID:bGSSCSEx >>604 > ていうか1234,567にはならんはずだぞ しれっと変えといてさすがにそれは恥ずかしいな >>598> comma_digit: digit_123 { ( ','? digit_3 ) }* >> 604 > comma_digit: digit_123 { ',' digit_3 }* >>605 まあ、よしとしてやろう http://mevius.5ch.net/test/read.cgi/tech/1624028577/606
607: デフォルトの名無しさん [sage] 2022/07/03(日) 20:20:25.60 ID:H80x+Ni5 問題を解かずに出題の形式美に必死になるなんて、このスレ的にどうなのよ? http://mevius.5ch.net/test/read.cgi/tech/1624028577/607
608: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2022/07/03(日) 21:46:41.57 ID:wwKaul6r char buf[64]; fgets(buf, 64, stdin); char *endptr; strtol(buf, &endptr, 10); if (*endptr == 0) { puts("INT"); return; } strtod(buf, &endptr); if (*endptr == 0) { puts("FLOAT"); return; } puts("INVALID"); http://mevius.5ch.net/test/read.cgi/tech/1624028577/608
609: デフォルトの名無しさん [sage] 2022/07/04(月) 22:09:22.65 ID:hLP3lYAM >>570 dart https://ideone.com/hT8xrN http://mevius.5ch.net/test/read.cgi/tech/1624028577/609
610: デフォルトの名無しさん [sage] 2022/07/08(金) 20:02:47.21 ID:N6PR1KyM お題 非負整数xが16進数表記で与えられる。xのビットu~lの範囲を逆順にした値を出力せよ。 [入力] x u l [例] 0x80 7 0 => 0x1 (8bit全体をreverse) 0xABCD 11 4 => 0xA3DD (真ん中8bitをreverse, 0xBC=0b10111100 -> 0b00111101=0x3D) 0x2 99 1 => 0x8000000000000000000000000 (2の99乗) http://mevius.5ch.net/test/read.cgi/tech/1624028577/610
611: デフォルトの名無しさん [sage] 2022/07/08(金) 22:06:04.39 ID:ju1TxHLl >>610 Ruby f = -> (*a) {_, e, s = a.map(&:to_i); '0x%X' % a[0].hex.digits(2).concat(Array.new(e, 0)).tap{_1[s..e] = _1[s..e].reverse}.reverse.reduce{|s, i| 2 * s + i}} ['0x80 7 0', '0xABCD 11 4', '0x2 99 1'].each{puts '%s -> %s' % [_1, f[*_1.split]]} # => 0x80 7 0 -> 0x1 0xABCD 11 4 -> 0xA3DD 0x2 99 1 -> 0x8000000000000000000000000 http://mevius.5ch.net/test/read.cgi/tech/1624028577/611
612: デフォルトの名無しさん [sage] 2022/07/09(土) 09:28:21.31 ID:72Wr/ML/ >>610 octave https://ideone.com/4MacE3 http://mevius.5ch.net/test/read.cgi/tech/1624028577/612
613: デフォルトの名無しさん [] 2022/07/09(土) 21:45:11.70 ID:A5P06KhI >>610 Kotlin https://paiza.io/projects/hUR6DylxGsrJBWKI-gmaKg BigInteger 使ったので、ビット数がかなり多くても大丈夫。 http://mevius.5ch.net/test/read.cgi/tech/1624028577/613
614: デフォルトの名無しさん [] 2022/07/24(日) 20:03:09.74 ID:RqwYivmm あげ http://mevius.5ch.net/test/read.cgi/tech/1624028577/614
615: デフォルトの名無しさん [] 2022/07/26(火) 20:19:27.06 ID:wEdk200U お題:数字をミラーリングせよ 入力 < 123 出力 > 123321 reverse系メソッドを使わなかったら加点とする http://mevius.5ch.net/test/read.cgi/tech/1624028577/615
616: デフォルトの名無しさん [sage] 2022/07/26(火) 20:33:23.78 ID:gSFNKY8C >>615 Ruby $><<(a=gets.scan /./)*'';$><<$a while$a=a.pop -*- input -*- 123 -*- output -*- 123321 http://mevius.5ch.net/test/read.cgi/tech/1624028577/616
617: デフォルトの名無しさん [] 2022/07/26(火) 22:30:32.74 ID:LilaKoZu >>615 Java static String mirror(String src) { var dest = new char[src.length() * 2]; var a = src.toCharArray(); for (var i = 0; i < a.length; i++) { dest[i] = a[i]; dest[dest.length - 1 - i] = a[i]; } return new String(dest); } http://mevius.5ch.net/test/read.cgi/tech/1624028577/617
618: アリ人間 ◆T6xkBnTXz7B0 [sage] 2022/07/26(火) 22:36:21.87 ID:SFGiBpCo >>615 派生お題: 文字列処理を使わずに与えられた整数を回文にせよ。 http://mevius.5ch.net/test/read.cgi/tech/1624028577/618
619: デフォルトの名無しさん [sage] 2022/07/26(火) 23:38:05.85 ID:ceC8PDvA >>615 octave https://ideone.com/Aa9KII f = @(a) a([1:end end:-1:1]); f('123') http://mevius.5ch.net/test/read.cgi/tech/1624028577/619
620: デフォルトの名無しさん [sage] 2022/07/26(火) 23:41:29.56 ID:DU0tXUgh 魔法の計算式とか無いん? http://mevius.5ch.net/test/read.cgi/tech/1624028577/620
621: デフォルトの名無しさん [sage] 2022/07/27(水) 00:03:13.42 ID:MKIa5t3g 俺も考えてみたけど調べても回分数のシグマ使わない一般式は無いみたいだな http://mevius.5ch.net/test/read.cgi/tech/1624028577/621
622: デフォルトの名無しさん [sage] 2022/07/27(水) 00:09:31.00 ID:C/59UMec >>615 JavaScript const mirror = (n, c, ...args) => c === null ? (answer => 0 <= n && answer <= Number.MAX_SAFE_INTEGER ? answer : RangeError(`${n} is invalid.`))(args.reduce((s, d) => s * 10 + d, n)) : c == undefined ? mirror(Number.parseInt(n), Number.parseInt(n), ...args) : mirror(n, c < 10 ? null : Math.floor(c / 10), ...args, c % 10); // test for (const [n] of [[-1, 'x'], [0, 'o'], [1, 'o'], [12345678, 'o'], [123456789, 'x'], [123.456, 'o (123321)']]) { const answer = mirror(n); console[answer instanceof RangeError ? 'error' : 'log'](answer); } http://mevius.5ch.net/test/read.cgi/tech/1624028577/622
623: デフォルトの名無しさん [sage] 2022/07/27(水) 01:46:36.04 ID:7bF+Pf0F octave綺麗 http://mevius.5ch.net/test/read.cgi/tech/1624028577/623
624: 96 [sage] 2022/08/02(火) 01:11:31.65 ID:6KqVNIq0 >>615 Perl5 use feature qw{say signatures}; no warnings 'experimental'; sub f($i, @a) { $i and @a ? (f(@a), $i) : $i } @a = split'',123; say @a, f(@a); 実行結果 ~ $ perl 20_615_mirror.pl 123321 http://mevius.5ch.net/test/read.cgi/tech/1624028577/624
625: 96 [sage] 2022/08/02(火) 01:20:34.60 ID:6KqVNIq0 >>615 Perl5 (リスト処理版) @a = split '', 123; print @a, map{@a[$#a - $_]} 0..$#a; 実行結果 ~ $ perl 20_615_mirror_list.pl 123321 http://mevius.5ch.net/test/read.cgi/tech/1624028577/625
626: デフォルトの名無しさん [sage] 2022/08/02(火) 22:22:16.97 ID:9ppQHDnA >>615 ocaml https://ideone.com/FFhxw9 let f s = let csc c s = Char.escaped c ^ s ^ Char.escaped c in let rec aux t = function 0 -> t | n -> aux (csc s.[n - 1] t) (n - 1) in aux "" @@ String.length s let () = print_endline @@ f "123" http://mevius.5ch.net/test/read.cgi/tech/1624028577/626
627: デフォルトの名無しさん [] 2022/08/02(火) 23:32:00.13 ID:49BZsXJW >>615 Kotlin https://paiza.io/projects/2Pe625DoTzToywf3zB2lvA わざわざ Iterator を実装して実現。 http://mevius.5ch.net/test/read.cgi/tech/1624028577/627
628: デフォルトの名無しさん [sage] 2022/08/03(水) 00:34:26.60 ID:xChmGTXr >>615 ocaml https://ideone.com/6YqGis let f s = s ^ String.init (String.length s) (fun i -> s.[String.length s - 1 - i]) let () = print_endline @@ f "123" http://mevius.5ch.net/test/read.cgi/tech/1624028577/628
629: デフォルトの名無しさん [] 2022/08/05(金) 11:38:46.19 ID:1Af6TgAi >>615 おもしれーことやってんじゃん じゃあperlの再帰する正規表現で行くかな https://paiza.io/projects/dxhWJaJSrcZdAFpJKe9uvQ http://mevius.5ch.net/test/read.cgi/tech/1624028577/629
630: デフォルトの名無しさん [] 2022/08/05(金) 13:16:58.45 ID:6eafuacR gnuWin32を基本使っています。 で行のソートなのですが、各行の末尾から逆向きの文字でソートって出来ませんか たとえば aaaaCB bbbBA cccccDB とかあったとき、これを bbbBA aaaaCB cccccDB としたいのです。 もし難しそうであれば、各行を反転、つまり abcde を edcba とする方法でもいいです。 http://mevius.5ch.net/test/read.cgi/tech/1624028577/630
631: デフォルトの名無しさん [] 2022/08/05(金) 13:43:08.90 ID:Vk8oFh91 >>630 Java Arrays.sort(a, (left, right) -> { var l = left.length() - 1; var r = right.length() - 1; while (l > -1 && r > -1) { var c = Character.compare(left.charAt(l), right.charAt(r)); if (c != 0) { return c; } l--; r--; } if (l > -1) { return 1; } if (r > -1) { return -1; } return 0; }); http://mevius.5ch.net/test/read.cgi/tech/1624028577/631
632: 96 [sage] 2022/08/05(金) 19:36:20.73 ID:Rv34IsoP >>630 Perl5が使える環境であれば… ~ $ cat 20_630_isort.pl chomp (@a = <>); sub f {join '', reverse split'', $_[0]} print "$_\n" for sort{f($a) cmp f($b)} @a; ~ $ cat input.txt aaaaCB bbbBA cccccDB ~ $ perl 20_630_isort.pl < input.txt > output.txt ~ $ cat output.txt bbbBA aaaaCB cccccDB http://mevius.5ch.net/test/read.cgi/tech/1624028577/632
633: デフォルトの名無しさん [sage] 2022/08/05(金) 20:52:38.21 ID:C4r7F682 >>630 ruby https://ideone.com/lQz0m2 f = ->(a) {a.sort_by &:reverse} p f.(%w(aaaaCB bbbBA cccccDB)) >>630 octave https://ideone.com/AUCxr3 function i = sorti(varargin), [~, i] = sort(varargin{:}); end f = @(a) a(sorti(cellfun(@(s) {flip(s)}, a))); f({'aaaaCB' 'bbbBA' 'cccccDB'}) http://mevius.5ch.net/test/read.cgi/tech/1624028577/633
634: 96 [sage] 2022/08/05(金) 22:43:00.57 ID:Rv34IsoP >>632 しまった、これだとsortの計算量 N・log N に応じた回数、比較のための文字列逆転 sub f の呼出しが起き、 データの行数が多いと遅いな http://mevius.5ch.net/test/read.cgi/tech/1624028577/634
635: 96 [sage] 2022/08/06(土) 00:54:37.07 ID:pYJx8bVL >>630 Perl5、計算量の抑制に配慮したバージョンと実行例 $ cat 20_630_isort2.pl print $_->[0] for sort{$a->[1] cmp $b->[1]} map{[$_, scalar reverse $_]} <>; $ cat input.txt aaaaCB bbbBA cccccDB $ perl 20_630_isort2.pl input.txt > output.txt $ cat output.txt bbbBA aaaaCB cccccDB http://mevius.5ch.net/test/read.cgi/tech/1624028577/635
636: 96 [sage] 2022/08/06(土) 01:06:37.87 ID:pYJx8bVL >>635 これ各行の行末の改行まで含めてreverseしてsortキーとするので、 もし入力ファイルの最後の行に改行が欠けていて無かったらsort結果がおかしくなる。 そのような万が一の場合に対してもrubstさも持たすならこうか chomp(@a = <>); print "$$_[0]\n" for sort{$$a[1] cmp $$b[1]} map{[$_, scalar reverse]} @a; http://mevius.5ch.net/test/read.cgi/tech/1624028577/636
637: デフォルトの名無しさん [] 2022/08/06(土) 05:59:59.26 ID:UcInr7RU >>630 Kotlin https://paiza.io/projects/bK5T2CQgxXwvVlcjKvw-dA ただ処理を連結しただけだな。コマンドラインでパイプ使ったみたいな感じ。 http://mevius.5ch.net/test/read.cgi/tech/1624028577/637
638: デフォルトの名無しさん [] 2022/08/06(土) 06:11:51.22 ID:UcInr7RU >>630 Linux 等の UNIX 系 OS で rev コマンドと sort コマンドが使える環境ならシェルのコマンドラインからこう入力するとできる。 (入力文字列は input.txt に入っているとして)。 rev input.txt | sort | rev Windows の環境でやる場合は互換性のあるコマンドを利用するか、または Cygwin や WSL や WSL2 等の UNIX 互換環境の中でコマンドラインから実行できる。 http://mevius.5ch.net/test/read.cgi/tech/1624028577/638
639: 96 [sage] 2022/08/06(土) 08:20:40.77 ID:pYJx8bVL >>610 Perl5 use Bit::Vector; $v = Bit::Vector->new(101); for (<DATA>) { ($h, $s, $e) = /0x(\S+) (\S+) (\S+)/; $v->from_Hex("$h"); $v->Interval_Reverse($e, $s); ($r) = $v->to_Hex() =~ /0+(\w+)/; print "$_ => 0x$r\n"; } __DATA__ 0x80 7 0 0xABCD 11 4 0x2 99 1 ※インデントを見易くするため全角スペースに置換しています 実行結果 $ perl 20_610_rebitfld.pl 0x80 7 0 => 0x1 0xABCD 11 4 => 0xA3DD 0x2 99 1 => 0x8000000000000000000000000 http://mevius.5ch.net/test/read.cgi/tech/1624028577/639
640: デフォルトの名無しさん [] 2022/08/06(土) 10:15:53.94 ID:8a3zeEyr >>638 Linux環境ではrevというのがあるのですね gnuWin32は全部揃ってないのですね。なんだかなあ rev以外でもLinuxにあってgnuWin32にはないのがあるのかな rev、自分で作ろうかな http://mevius.5ch.net/test/read.cgi/tech/1624028577/640
641: デフォルトの名無しさん [sage] 2022/08/06(土) 11:17:00.60 ID:y9e1BfKB >>630 ocaml https://ideone.com/zdWLHX let rev s = String.init (String.length s) (fun i -> s.[String.length s - 1 - i]) let (<<) f g x = f (g x) let f = List.map (fun (r, s) -> s) << List.sort compare << List.map (fun s -> (rev s, s)) let () = List.iter print_endline @@ f ["aaaaCB"; "bbbBA"; "cccccDB"]; http://mevius.5ch.net/test/read.cgi/tech/1624028577/641
642: 96 [sage] 2022/08/06(土) 15:02:55.35 ID:ddLJv/Kp >>640 gnuWin32 用の rev.exe が欲しいなら、書き起こさなくともutil-linux-ng パッケージに入っていると思うが… util-linux-ng for Windows http://gnuwin32.sourceforge.net/packages/util-linux-ng.htm Util-Linux contains miscellaneous utilities: col: filter reverse line feeds from input colcrt: filter nroff output for CRT previewing colrm: remove columns from a file ddate: converts Gregorian dates to Discordian dates getopt: parse command options (enhanced) hexdump: ascii, decimal, hexadecimal, octal dump line: read one line rename: rename files rev: reverse lines of a file or files ← tailf: follow the growth of a log file whereis: locate the binary, source, and manual page files for a command 作りたいというなら類似のsampleソースはゴマンと転がっとるし C reverse string rev.c strrev - Google 検索 https://www.google.com/search?q=C+reverse+string+rev.c+strrev C program to reverse a string | Programming Simplified https://www.programmingsimplified.com/c-program-reverse-string C_69 C Program to Reverse a String | with strrev() and without strrev() function - YouTube https://www.youtube.com/watch?v=530jWnBMD2M … 好きにしんしゃい http://mevius.5ch.net/test/read.cgi/tech/1624028577/642
643: 96 [sage] 2022/08/06(土) 15:16:53.43 ID:ddLJv/Kp Cygwin などに使われている util-linux パッケージのオリジナルな現行のソースは GitHub - util-linux/util-linux https://github.com/util-linux/util-linux かな。そのうち rev.c のソースは util-linux/rev.c at master ・ util-linux/util-linux ・ GitHub https://github.com/util-linux/util-linux/blob/master/text-utils/rev.c ちな util-linux パッケージは2006年に fork したとき名前に -ng をつけて util-linux-ng になったが 2010年に util-linux に名前を戻している。 cf.) util-linux - Wikipedia https://en.wikipedia.org/wiki/Util-linux ついつい、調べ物をしてしまった…orz http://mevius.5ch.net/test/read.cgi/tech/1624028577/643
644: デフォルトの名無しさん [] 2022/08/06(土) 17:24:05.41 ID:8a3zeEyr >>642 ありがとう。そんなとこにあったのか http://mevius.5ch.net/test/read.cgi/tech/1624028577/644
645: デフォルトの名無しさん [] 2022/08/07(日) 09:51:45.46 ID:UY2OKMya >>642 linuxのrevでやってみました。ところが、全角日本語はやはりダメですね なので、AHK http://mevius.5ch.net/test/read.cgi/tech/1624028577/645
646: デフォルトの名無しさん [] 2022/08/07(日) 09:52:47.25 ID:UY2OKMya >>642 linuxのrevでやってみました。ところが、全角日本語はやはりダメですね なので、AHKで自作で作ってみました rev input.txt | sort | rev で問題なく動きました http://mevius.5ch.net/test/read.cgi/tech/1624028577/646
647: デフォルトの名無しさん [sage] 2022/08/07(日) 16:26:03.27 ID:BSSIjy3s >>645 環境変数 LANG の設定の問題とか? こっちでは日本語での rev できたよ。 CentOS 7 で bash で LANG=ja_JP.UTF-8 の状態。そこに Windows から TeraTerm で ssh ログインして試したらできた。 $ echo $LANG ja_JP.UTF-8 $ ( echo 見城徹 ; echo 箕輪厚介 ; echo ガーシー ; echo 木原誠二官房副長官 ) | rev 徹城見 介厚輪箕 ーシーガ 官長副房官二誠原木 $ http://mevius.5ch.net/test/read.cgi/tech/1624028577/647
648: デフォルトの名無しさん [] 2022/08/07(日) 18:30:22.20 ID:C65TbvUb お題 0~2がランダムに8個入力されます 8個の数字を:で結合して出力してください 0が連続する場合は連続する0を::に置換してください 0の連続を::に置換できるのは1回のみです 0の連続が複数存在する場合は長い方を置換してください 長さが同じ場合は先頭の方を置換してください 1個の0は置換してはいけません 例 0, 0, 0, 1, 2, 1, 2, 2 → ::1:2:1:2:2 2, 1, 2, 0, 0, 0, 1, 1 → 2:1:2::1:1 1, 1, 2, 2, 1, 0, 0, 0 → 1:1:2:2:1:: 2, 0, 0, 2, 0, 0, 0, 2 → 2:0:0:2::2 1, 0, 0, 1, 2, 0, 0, 2 → 1::1:2:0:0:2 0, 1, 2, 0, 1, 1, 0, 2 → 0:1:2:0:1:1:0:2 http://mevius.5ch.net/test/read.cgi/tech/1624028577/648
649: デフォルトの名無しさん [sage] 2022/08/07(日) 19:28:27.32 ID:MpscsJR5 >>648 Ruby f = -> s { x = s.gsub(', ', ?:); y = x.scan(/0(?::0)+/).max&.count(?0) || 0; x.sub(/:?0(:0){#{y - 1}}+:?/, '::') } [ '0, 0, 0, 1, 2, 1, 2, 2', '2, 1, 2, 0, 0, 0, 1, 1', '1, 1, 2, 2, 1, 0, 0, 0', '2, 0, 0, 2, 0, 0, 0, 2', '1, 0, 0, 1, 2, 0, 0, 2', '0, 1, 2, 0, 1, 1, 0, 2' ].each{ |s| puts '%s -> %s' % [s, f[s]] } # => 0, 0, 0, 1, 2, 1, 2, 2 -> ::1:2:1:2:2 2, 1, 2, 0, 0, 0, 1, 1 -> 2:1:2::1:1 1, 1, 2, 2, 1, 0, 0, 0 -> 1:1:2:2:1:: 2, 0, 0, 2, 0, 0, 0, 2 -> 2:0:0:2::2 1, 0, 0, 1, 2, 0, 0, 2 -> 1::1:2:0:0:2 0, 1, 2, 0, 1, 1, 0, 2 -> 0:1:2:0:1:1:0:2 http://mevius.5ch.net/test/read.cgi/tech/1624028577/649
650: デフォルトの名無しさん [] 2022/08/07(日) 19:57:31.19 ID:xO94aiKw >>648 perl5 https://paiza.io/projects/5qVZ3qjP3YDPyVVywRVEEQ http://mevius.5ch.net/test/read.cgi/tech/1624028577/650
651: デフォルトの名無しさん [sage] 2022/08/07(日) 20:01:42.93 ID:H+tq1Ypt 正規表現のreplace一個で行けそうと思ったけど最長マッチみたいなの無理なのか http://mevius.5ch.net/test/read.cgi/tech/1624028577/651
652: デフォルトの名無しさん [sage] 2022/08/07(日) 20:16:36.94 ID:MpscsJR5 拡張正規表現の中にはチューリング完全なものもあるけどね http://mevius.5ch.net/test/read.cgi/tech/1624028577/652
653: デフォルトの名無しさん [] 2022/08/07(日) 20:17:47.43 ID:xO94aiKw そうか 単純に s/0{$n}/::/; を連射して増やしていくだけでいいんだな 最後に成功したのを返す感じで http://mevius.5ch.net/test/read.cgi/tech/1624028577/653
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 349 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s