[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/28 06:24 / Filesize : 324 KB / Number-of Response : 1049
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:02:57.84 ID:MQWrKSb7.net]
プログラミングのお題スレです。

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

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

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

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

※前スレ
プログラミングのお題スレ Part19
https://mevius.5ch.net/test/read.cgi/tech/1606662245/

666 名前:96 mailto:sage [2022/08/06(土) 00:54:37.07 ID:pYJx8bVL.net]
>>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

667 名前:96 mailto:sage [2022/08/06(土) 01:06:37.87 ID:pYJx8bVL.net]
>>635
これ各行の行末の改行まで含めてreverseしてsortキーとするので、
もし入力ファイルの最後の行に改行が欠けていて無かったらsort結果がおかしくなる。
そのような万が一の場合に対してもrubstさも持たすならこうか

chomp(@a = <>);
print "$$_[0]\n" for sort{$$a[1] cmp $$b[1]} map{[$_, scalar reverse]} @a;

668 名前:デフォルトの名無しさん [2022/08/06(土) 05:59:59.26 ID:UcInr7RU.net]
>>630
Kotlin
https://paiza.io/projects/bK5T2CQgxXwvVlcjKvw-dA

ただ処理を連結しただけだな。コマンドラインでパイプ使ったみたいな感じ。

669 名前:デフォルトの名無しさん [2022/08/06(土) 06:11:51.22 ID:UcInr7RU.net]
>>630
Linux 等の UNIX 系 OS で rev コマンドと sort コマンドが使える環境ならシェルのコマンドラインからこう入力するとできる。
(入力文字列は input.txt に入ってい

670 名前:驍ニして)。

rev input.txt | sort | rev

Windows の環境でやる場合は互換性のあるコマンドを利用するか、または Cygwin や WSL や WSL2 等の UNIX 互換環境の中でコマンドラインから実行できる。
[]
[ここ壊れてます]

671 名前:96 mailto:sage [2022/08/06(土) 08:20:40.77 ID:pYJx8bVL.net]
>>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

672 名前:デフォルトの名無しさん [2022/08/06(土) 10:15:53 ID:8a3zeEyr.net]
>>638
Linux環境ではrevというのがあるのですね
gnuWin32は全部揃ってないのですね。なんだかなあ
rev以外でもLinuxにあってgnuWin32にはないのがあるのかな
rev、自分で作ろうかな

673 名前:デフォルトの名無しさん mailto:sage [2022/08/06(土) 11:17:00.60 ID:y9e1BfKB.net]
>>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"];

674 名前:96 mailto:sage [2022/08/06(土) 15:02:55.35 ID:ddLJv/Kp.net]
>>640
gnuWin32 用の rev.exe が欲しいなら、書き起こさなくともutil-linux-ng パッケージに入っていると思うが…

util-linux-ng for Windows
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

… 好きにしんしゃい



675 名前:96 mailto:sage [2022/08/06(土) 15:16:53.43 ID:ddLJv/Kp.net]
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 した

676 名前:ニき名前に -ng をつけて util-linux-ng になったが
2010年に util-linux に名前を戻している。
cf.)
util-linux - Wikipedia
https://en.wikipedia.org/wiki/Util-linux

ついつい、調べ物をしてしまった…orz
[]
[ここ壊れてます]

677 名前:デフォルトの名無しさん [2022/08/06(土) 17:24:05.41 ID:8a3zeEyr.net]
>>642
ありがとう。そんなとこにあったのか

678 名前:デフォルトの名無しさん [2022/08/07(日) 09:51:45.46 ID:UY2OKMya.net]
>>642
linuxのrevでやってみました。ところが、全角日本語はやはりダメですね
なので、AHK

679 名前:デフォルトの名無しさん [2022/08/07(日) 09:52:47.25 ID:UY2OKMya.net]
>>642
linuxのrevでやってみました。ところが、全角日本語はやはりダメですね
なので、AHKで自作で作ってみました
rev input.txt | sort | rev
で問題なく動きました

680 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 16:26:03 ID:BSSIjy3s.net]
>>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
徹城見
介厚輪箕
ーシーガ
官長副房官二誠原木
$

681 名前:デフォルトの名無しさん [2022/08/07(日) 18:30:22.20 ID:C65TbvUb.net]
お題
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

682 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 19:28:27.32 ID:MpscsJR5.net]
>>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

683 名前:デフォルトの名無しさん [2022/08/07(日) 19:57:31.19 ID:xO94aiKw.net]
>>648
perl5
https://paiza.io/projects/5qVZ3qjP3YDPyVVywRVEEQ

684 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 20:01:42.93 ID:H+tq1Ypt.net]
正規表現のreplace一個で行けそうと思ったけど最長マッチみたいなの無理なのか



685 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 20:16:36.94 ID:MpscsJR5.net]
拡張正規表現の中にはチューリング完全なものもあるけどね

686 名前:デフォルトの名無しさん [2022/08/07(日) 20:17:47.43 ID:xO94aiKw.net]
そうか
単純に s/0{$n}/::/;
を連射して増やしていくだけでいいんだな
最後に成功したのを返す感じで

687 名前:デフォルトの名無しさん [2022/08/07(日) 20:58:47.87 ID:xO94aiKw.net]
>>648
perl5 # sub squash0 を>653 で書き替えた
https://paiza.io/projects/pNwwe9yNB_dczFaRbV3ZeA

688 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 22:19:54.37 ID:UmcKtz1r.net]
>>648 octave
https://ideone.com/3Udpgi
function s = f(a)
c = di

689 名前:ff(find([1 diff(a) 1]));
e = cumsum(c);
b = e - c + 1;
n = arrayfun(@(i) a(i), e);
[~, i] = max(c.*(n == 0));
s = arrayfun(@(n) {int2str(n)}, a);
if (1 < c(i))
s(b(i):e(i)) = ':';
end
s = regexprep(strjoin(s, ':'), ':::+', '::');
end
[]
[ここ壊れてます]

690 名前:655 mailto:sage [2022/08/07(日) 23:28:54.94 ID:UmcKtz1r.net]
結果同じだけど若干の整理可能だった

n = arrayfun(@(i) a(i), e);
[~, i] = max(c.*(n == 0));

[~, i] = max(c.*(a(e) == 0));

691 名前:96 [2022/08/08(月) 01:54:39.48 ID:Fkng8CYp.net]
>>648 Perl5

use List::Util 'max';
for (<DATA>) {
 %h = map{length($_) => $_} /(,?0(?:,0)+,?)/g;
 $n = max keys %h;
 chomp($i = $_);
 s/$h{$n}/::/ if $n;
 s/,/:/g;
 print "$i => $_";
}
__DATA__
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

※見易くするためインデントを全角スペースに置換してあります。


実行結果
$ perl 20_648.pl
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

692 名前:デフォルトの名無しさん [2022/08/08(月) 18:20:49.05 ID:911TGIju.net]
>>648
Common Lisp https://ideone.com/p9qSmC
JavaScript https://ideone.com/2pXZdF

693 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 20:35:58.72 ID:xa8ST9bT.net]
>>648 ocaml
https://ideone.com/j7yye2

694 名前:デフォルトの名無しさん mailto:sage [2022/08/10(水) 21:08:31.81 ID:xa8ST9bT.net]
>>648 octave
https://ideone.com/Uyr9cV
・[1, 1, 1, 1, 1, 1, 1, 1]のとき正しくなかったのを修正



695 名前:デフォルトの名無しさん [2022/08/11(木) 15:24:25.24 ID:/k5aJ7yS.net]
>>648
Kotlin
https://paiza.io/projects/NFrxhMlgOO7dQdW20u_-kw

できたことはできたが、なんかもっと良いやり方がありそうな気もする。

696 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>648
敢えて正規表現使わずKotlinで。ややこしかったわ
https://ideone.com/JZcPdU

697 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>661
別の解き方が見れておもろい

698 名前:デフォルトの名無しさん mailto:sage [2022/08/11(木) 22:42:32.18 ID:lr7eXs7b.net]
>>648 java
https://ideone.com/f5yjN8

699 名前:661 [2022/08/12(金) 00:33:44.04 ID:DNG+vRxr.net]
全部0の時に :: にならなかったので>>661はちょっと修正した。

700 名前:デフォルトの名無しさん [2022/08/13(土) 14:28:26.51 ID:JbrEzaSr.net]
お題
1~37からランダムに重複なく7つの数を選び出して小さい順にソートしてください
それを5つ出力してください


[2, 4, 9, 13, 20, 29, 36]
[1, 4, 12, 13, 15, 20, 33]
[1, 3, 5, 7, 11, 20, 24]
[3, 7, 8, 21, 27, 33, 34]
[1, 2, 14, 23, 26, 35, 36]

701 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 14:31:07.91 ID:JPhXlbrB.net]
>>666 Ruby
[*1..37].sample(7).sort

# => [4, 8, 15, 20, 24, 26, 37]

702 名前:デフォルトの名無しさん [2022/08/13(土) 18:53:16.03 ID:jyB6kjuE.net]
>>666 Common Lisp
https://ideone.com/NMCh3O

703 名前:デフォルトの名無しさん [2022/08/13(土) 19:08:33.35 ID:jyB6kjuE.net]
>>668
投稿後一部訂正、n の範囲チェックを追加

負数は弾く
(check-type n (integer 0 *))

上限はシーケンスの長さ
(loop repeat n

(loop (min n (length sequence))

704 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 19:54:15.55 ID:JW3gpbYe.net]
>>666 octave
https://ideone.com/Iml4xq
f = @() sort(randperm(37, 7));
cell2mat(arrayfun(@(~) {f()}, (1:5)'))



705 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 00:39:46.54 ID:YzvfyuVN.net]
>>666
Kotlin script

repeat(5) { println((1..37).toList().shuffled().slice(0..6).sorted()) }


実行例

[6, 7, 9, 10, 16, 2

706 名前:2, 27]
[2, 8, 9, 11, 16, 32, 33]
[11, 13, 18, 25, 26, 30, 34]
[2, 3, 12, 14, 20, 27, 37]
[7, 13, 14, 19, 27, 30, 35]
[]
[ここ壊れてます]

707 名前:671 mailto:sage [2022/08/14(日) 00:41:50.08 ID:YzvfyuVN.net]
>>671はこれでも同じだった (toList() 抜き)。

repeat(5) { println((1..37).shuffled().slice(0..6).sorted()) }

708 名前:96 mailto:sage [2022/08/14(日) 01:45:55.09 ID:jl8HjsTF.net]
>>666 Perl5

use List::Util 'shuffle';
@a = 1..37;
$" = ', ';
print "@{[(shuffle@a)[0..6]]}\n"
 for 1..5;


実行結果

$ perl 20_666_shuffle1-37x5.pl
3, 2, 10, 25, 9, 23, 27
35, 6, 30, 8, 37, 29, 36
20, 29, 19, 18, 37, 21, 23
12, 30, 29, 7, 3, 31, 26
34, 12, 1, 14, 28, 2, 21

709 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 01:54:16.92 ID:v+rcxIed.net]
>>673
ソートされてないじゃん

710 名前:96 mailto:sage [2022/08/14(日) 01:59:26.66 ID:jl8HjsTF.net]
>>666 Perl5、>>673 は sort するの忘れてた…orz


use List::Util 'shuffle';
@a = 1..37;
$" = ', ';
print "@{[sort{$a <=> $b} ((shuffle @a)[0..6])]}\n" for 1..5;


実行結果

$ perl 20_666_shuffle1-37x5.pl
5, 9, 22, 28, 30, 32, 36
1, 2, 7, 21, 23, 26, 36
6, 14, 15, 16, 19, 26, 28
13, 14, 15, 16, 30, 35, 37
1, 3, 10, 20, 27, 29, 30

711 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:35:56.93 ID:JoIEy2rI.net]
>>666 ocaml
https://ideone.com/3UpGQV
let seq b e =
let rec aux acc n =
if n < b then acc else aux (n :: acc) (pred n)
in aux [] e
let (<<) f g x = f (g x)
let take n =
let rec aux acc n = function [] -> acc | x :: xs ->
if n <= 0 then acc else aux (x :: acc) (pred n) xs
in List.rev << aux [] n
let shuffle =
List.map snd << List.sort compare << List.map (fun x -> (Random.bits (), x))
let string_of_ints =
Printf.sprintf "[%s]" << String.concat "; " << List.map string_of_int
let f () = string_of_ints @@ List.sort compare @@ take 7 @@ shuffle @@ seq 1 37
let () = Random.self_init ();
List.iter (print_endline << f << ignore) @@ seq 1 5

712 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>666 c
https://ideone.com/EHr86S

713 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 21:45:18.38 ID:b/j10zkL.net]
(1) aとbからなる文字列があるときその中で部分文字列bbaが最初に完成する文字数を求める
ab -> 0
aaa -> 0
bba -> 3
bbba -> 4
babbab -> 5
bbabbaa -> 3

(2) ちょうど50文字のaとbからなる全ての並びの文字列の内
50文字目(最後)にbbaが完成するのは何通りあるか?

長さ3文字で3文字目に完成するのはbbaのひとつだけ
長さ4文字で4文字目に完成するのはabbaとbbbaの二通り

714 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>678 Ruby
(1)
%w[ab aaa bba bbba babbab bbabbaa].each do |s|
i = s =~ /bba\K/
puts '%s -> %d' % [s, i ? i + 3 : 0]
end

# =>
ab -> 0
aaa -> 0
bba -> 3
bbba -> 4
babbab -> 5
bbabbaa -> 3

(2)
f = -> (n, a=[0, 0, 1]) {return a[n] if n<a.size; a<<f[n-1,a]+f[n-2,a]+1;a.last}

p f[49] # => 12586269024



715 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:30:32.35 ID:z6QFcjeU.net]
行列の掛け算を実装せよ
二次正方行列 A=((1 -2) (2 3)), B = ((-2 1)(3 -1)) について
AB, BA を求めよ
可能であれば二次正方行列以外の行列についても対応せよ
実装の細かい点については出題者は指定しないので良きに計らって結構。

<お願い>
行列の積において結合則成立の証明を教えてください

716 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:43:04.52 ID:0XTzAkvO.net]
>>678 c
https://ideone.com/hlf3c3
・(1)(2)ともに自信なし(たぶんお題の意味わかってない)

717 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:49:01.35 ID:gf0q/4T2.net]
>>680 Ruby Matrixクラス不使用
def product(a, b)


718 名前:[
[a[0][0] * b[0][0] + a[0][1] * b[1][0], a[0][0] * b[0][1] + a[0][1] * b[1][1]],
[a[1][0] * b[0][0] + a[1][1] * b[1][0], a[1][0] * b[0][1] + a[1][1] * b[1][1]],
]
end

p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]])

# => [[-8, 3], [5, -1]]

# 夏休みの宿題は自分でやりましょう
[]
[ここ壊れてます]

719 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:51:54.64 ID:7JC7m3TJ.net]
>>682
>二次正方行列以外の行列についても対応せよ

720 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 23:05:21.92 ID:gf0q/4T2.net]
>>680 >>683
def product(a, b)
m = a.first.size
c = Array.new(a.size){[]}
a.size.times do |i|
b.first.size.times do |j|
c[j][i] = m.times.map{|k| a[k][i] * b[j][k]}.sum
end
end
c
end

p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]])
# => [[0, 7], [1, -9]]

p product([[-2, 1], [3, -1]], [[1, -2], [2, 3]])
# => [[-8, 3], [5, -1]]

721 名前:デフォルトの名無しさん [2022/08/14(日) 23:09:42.44 ID:ct8M+Uij.net]
NxMのデータをどう定義するか だけの問題だな
毎回悩む 下は後悔してるタイプ
(defparameter *position-IO*
(loop
for input in '(7 8 9
4 5 6
1 2 3)
for pos below 9
collect (cons input pos)))

722 名前:デフォルトの名無しさん [2022/08/15(月) 00:42:19.42 ID:PTEGgn5Q.net]
>>679
どういう頭してたらその法則性に気づくん???

723 名前:デフォルトの名無しさん [2022/08/15(月) 01:31:39.90 ID:b/MTJSvV.net]
>>678
Kotlin script

(1)
listOf("ab","aaa","bba","bbba","babbab","bbabbaa").forEach { print("$it ->"); it.indexOf("bba").let { if (it >= 0) println(it + 3) else println(0) } }

実行時の出力

ab ->0
aaa ->0
bba ->3
bbba ->4
babbab ->5
bbabbaa ->3

(2)
println(1L shl (50 - 3))

実行時の出力

140737488355328

724 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 01:56:11.12 ID:RG8mAl+Q.net]
(2)
出題の仕方が間違ってた
最後に唯一のbbaが現れるパターンと書くべきだった
自分の中ではこのことしか考えてなかったから
>>679さんは汲んでくれたようで、早さにも驚いたけど



725 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 09:19:59.19 ID:jWRkxbjN.net]
なるほど, 再帰的に構成すればいいのか
aから始まる時: a + x[n-1]
baから始まる時: ba + x[n-2]
bbから始まる時: bb...bba

726 名前:デフォルトの名無しさん [2022/08/15(月) 09:43:22.06 ID:90U51paY.net]
>>686
そういう漸化式は普通に受験で良くでてくる

727 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:00:11.92 ID:ioAOBwsA.net]
>>680
https://ideone.com/umJbre
https://ja.wikibooks.org/wiki/%E7%B7%9A%E5%9E%8B%E4%BB%A3%E6%95%B0%E5%AD%A6/%E8%A1%8C%E5%88%97%E3%81%A8%E8%A1%8C%E5%88%97%E5%BC%8F/%E7%AC%AC%E4%B8%89%E9%A1%9E/%E8%A1%8C%E5%88%97%E3%81%AE%E7%A9%8D#matrix's-associativity

728 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:16:58.66 ID:RVV7PTHo.net]
>>691 c
https://ideone.com/47VxwF
・二次元でintのみ

729 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:19:53.25 ID:RVV7PTHo.net]
>>680
https://ideone.com/47VxwF
・二次元でintのみ

730 名前:693 mailto:sage [2022/08/16(火) 16:05:44.79 ID:y+iYdbLW.net]
>>680 c
https://ideone.com/lWljpL
>>693から若干の整理
・インデントも修正

731 名前:デフォルトの名無しさん [2022/08/16(火) 19:29:50.25 ID:6LZk+vGC.net]
>>688
え?言ってる意味がわからない。どういうこと?

732 名前:デフォルトの名無しさん [2022/08/16(火) 20:01:21.15 ID:xodQRDI1.net]
bba+gge=momo

733 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>695
末尾以外にbbaが現れる文字列を除外するってことじゃろう

734 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:15:34.85 ID:dhC56AkH.net]
bbaが最後に達成されるんじゃなければ2^47計算するだけのなん



735 名前:フ面白みもない問題になるからそこで気付く人は気づくよね []
[ここ壊れてます]

736 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 23:04:49.04 ID:mbmTGUKF.net]
ついでに50文字で今度は最後がbbaじゃなくて
bbbのときとbabのときのそれぞれのパターン数を求めるって問題

737 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 01:28:19.97 ID:0f27vmNE.net]
>>697
なるほど。やっと意味がわかった。

738 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 14:04:15.12 ID:UFtMHmKs.net]
お題:分割されている顔文字を結合して表示してください
1つの顔文字は半角4字で構成。左右対称。2字ずつ半分に分割されてシャッフルされている
出力する顔文字の順番は自由とする

入力 < ^)(^
出力 > (^^)

入力 < ^)(-(^-)(vv)
出力 > (^^)(--)(vv)

739 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 14:59:27.47 ID:2ZT38iyw.net]
お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」をそれぞれ表示する方法を示してください
便宜的に、ナンプレのマスには左上から右へ、右下に向かい0〜80までの数値を入れます。
0 1 2 3 4 5 6 7 8
...
...............80
左から1列目の9マスは

740 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 15:10:22.08 ID:2ZT38iyw.net]
途中送信してしまった

お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」のマスをそれぞれ表示する方法を示してください
※便宜的に、ナンプレのマスには左上から右へ、右下に向かい0〜80までの数値を入れます。

0 1 2 3 4 5 6 7 8
...
...............80

例えば左から1列目の9マスは
[0 9 18 27 36 45 54 63 72]
となります。
等差を利用して数字だけを表示するものは不可です。
マスに何の値が入っていても表示できるようにしてください。

741 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 21:47:42.92 ID:GkJOOerG.net]
>>703 c
https://ideone.com/lBKsc9

742 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 23:34:27.13 ID:yTY/OYLu.net]
>>701
(><)

743 名前:デフォルトの名無しさん [2022/08/18(木) 02:15:12.90 ID:KCyiWPRI.net]
>>703
perl5
https://paiza.io/projects/amKhSF3cnp1Ny5-2yWLO4g

744 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 03:07:13.35 ID:dBOjwuYR.net]
>>701 JavaScript
> ['^)(^', '^)(-(^-)(vv)', '<)(>'].map((R => input => Array.from(input.matchAll(/\((.)/g)).reduce((output, [l, r]) => output + l + R(r) + ')', ''))(r => r == '>' ? '<' : r))
[ '(^^)', '(--)(^^)(vv)', '(><)' ]



745 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>701 Ruby
f = -> str do
loop do
str.sub!(/(.)\)(.*)\(\1/, '(\1\1)\2') ||
str.sub!(/\((.)(.+)\1\)/, '(\1\1)\2') ||
(break str)
end
end

%w[ ^)(^ ^)(-(^-)(vv) (-(^-)^)].each do |s|
puts '%s -> %s' % [s, f[s.b]]
end

# =>
^)(^ -> (^^)
^)(-(^-)(vv) -> (^^)(--)(vv)
(-(^-)^) -> (--)(^^)

746 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>703 Ruby
PLACEHOLDER = [*0..80]

field = 9.times.reduce([]) do |s, y|
s << 9.times.map do |x|
PLACEHOLDER[9 * y + x]
end
end

puts field.map{|r| r.map{'%02d' % _1}.join}

# =>
000102030405060708
091011121314151617
181920212223242526
272829303132333435
363738394041424344
454647484950515253
545556575859606162
636465666768697071
727374757677787980

747 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
>>703 お題をよく読んでいなかった >>709の続き
row = -> (n, field) {field[n]}
column = -> (n, field) {field.map{_1[n]}}
block = -> (n, field) {9.times.map{n * 3 + n / 3 * 18 + _1 + _1 / 3 * 6}.map{field.flatten[_1]}}

puts row[7, field].join(?,)
# => 63,64,65,66,6

748 名前:7,68,69,70,71

puts column[7, field].join($/)
# =>
7
16
25
34
43
52
61
70
79

puts block[7, field].each_slice(3).map{_1.join(?,)}.join($/)
# =>
57,58,59
66,67,68
75,76,77
[]
[ここ壊れてます]

749 名前:704 mailto:sage [2022/08/18(木) 23:38:15.48 ID:YBxy/c4L.net]
>>703 c
https://ideone.com/0yXRih
>>704から若干の整理

750 名前:デフォルトの名無しさん [2022/08/19(金) 23:42:01.44 ID:GkIv/1vJ.net]
お題
<user>:<group>の数
<user>:<group>
<user>:<point>の数
<user>:<point>
が入力されます

<group>ごとに<point>を集計して<group>順に
<group>:<point>を出力してください

例)
// 入力
6
UserE:GroupC
UserD:GroupA
UserB:GroupC
UserA:GroupC
UserC:GroupB
UserF:GroupB
6
UserB:3
UserF:2
UserD:5
UserC:13
UserE:11
UserA:7

// 出力
GroupA:5
GroupB:15
GroupC:21

751 名前:デフォルトの名無しさん [2022/08/19(金) 23:58:05.14 ID:zRvvDV0W.net]
なんで数を入力してるんだ?
後の情報であきらかではないか
まさかグループ名が整数でも良いと考えている?

752 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 00:02:54.24 ID:xIohwuBb.net]
>>712 Ruby
g, p = str.split(/^\d+$/)[1, 2].map{_1.strip.each_line.map{|s| s.chomp.split(?:)}.to_h}
puts g.reduce(Hash.new(0)){|h, (k, v)| h[v] += p[k].to_i; h}.sort.map{_1.join(?:)}

# =>
GroupA:5
GroupB:15
GroupC:21

753 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 07:49:15.49 ID:/HXUcxOA.net]
// >>712 Node.js
import readline from 'node:readline';
const rl = readline.createInterface({input: process.stdin, output: process.stdout});
const all = [/* {user, group, point}, ... */];
let usergroup = false;
rl.on('line', line => {
line = line.trim();
if (line) {
if (/^\d+$/.test(line)) {
usergroup = !usergroup;
} else if (usergroup) {
const {groups} = line.match(/^(?<user>[^:]+):(?<group>[^:]+)$/);
all.push(groups);
} else {
const {groups: {user, point}} = line.match(/^(?<user>[^:]+):(?<point>\d+)$/);
Object.defineProperty(all.find(_ => _.user == user), 'point', {value: Number(point), enumerable: true});
}
} else {
rl.close();
}
});
rl.on('close', () => {
for (const [group, point] of Object.entries(all.reduce((gp, {group, point}) => {gp[group] = (gp[group] ?? 0) + point; return gp;}, {})).sort(([a], [b]) => a < b ? -1 : 1)) {
console.log(`${group}:${point}`);
}
});

754 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 17:09:35.31 ID:tvd+mgyM.net]
>>712 c
https://ideone.com/Edol3U



755 名前:デフォルトの名無しさん [2022/08/20(土) 21:26:59.76 ID:myFbjTal.net]
>>712
C#
https://paiza.io/projects/IAgPLTHFbJ-HmDcLHFrNYA

756 名前:デフォルトの名無しさん [2022/08/20(土) 22:24:09.90 ID:5JSGWnVi.net]
>>703ってこれじゃだめなのかな
7行で書ける
https://ideone.com/eKTMZr

757 名前:96 mailto:sage [2022/08/21(日) 02:42:00.00 ID:P6BPpVvp.net]
>>712 Perl5

use feature qw{say signatures}; no warnings "experimental::signatures";
sub ($n, @a) {
 $h{$$_[0]} = $$_[1] for map{[/(\w+)/g]} @_[1..$n];
 sub ($m, @) {
  $g{$h{$$_[0]}} += $$_[1] for map{[/(\w+)/g]} @_[1..$m];
 }->(@a[$n..$#a]);
 say "$_:$g{$_}" for sort keys %g;
}->(<>);

※見易くするためインデントを全角スペースに置換してあります。


実行結果:
https://ideone.com/GxsRSY

758 名前:デフォルトの名無しさん [2022/08/21(日) 06:03:07.44 ID:V5T4kdVo.net]
>>712
<group>順にって、何を元にして group の順序を決めるの?
入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?

759 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 07:03:57.35 ID:3JIuIXQv.net]
<group>毎という事だと思う
サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし

760 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 08:49:24.60 ID:0ZMA3aWJ.net]
>>713
実際にここでも数字を使っている例が出て来てるからわかると思うけど
競プロなんかではよくあるフォーマットだよ

761 名前:デフォルトの名無しさん [2022/08/21(日) 18:07:19.66 ID:ecIOs+Jg.net]
>>666
C#
https://paiza.io/projects/sT_SLT3n0NNab0a-ZD7IHQ

762 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:28:38.88 ID:Y2TZP89X.net]
お題:Hello, World!を出力中にプログラムを強制終了せよ
Hello, World!が完全に出力されたらGAME OVERとする

763 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:45:13.28 ID:ui07Fbeq.net]
>>724 Ruby
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}
Thread.new{exit}

# =>
Hello, World!

764 名前:デフォルトの名無しさん [2022/08/21(日) 18:49:48.17 ID:ecIOs+Jg.net]
>>701
C#
https://paiza.io/projects/D1PZTVPBn2qnksCQnwYQmw?language=csharp



765 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:51:27.42 ID:ui07Fbeq.net]
>>725 訂正
Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'}

Thread.new{exit!}


# => H

766 名前:デフォルトの名無しさん [[ここ壊れてます] .net]
>>703
C#
https://paiza.io/projects/HzrEP1l1vX4Z3JUqmHSUwg






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<324KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef