[過去ログ] プログラミングのお題スレ Part13 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
279(13): 2019/02/21(木)18:54 ID:1axkeZoV(1/2)調 AAS
お題:リスト等を", "で結合して表示せよ。ただし最後は" and "で結合する。
https://ideone.com/pVuO7T
280: 2019/02/21(木)19:06 ID:TUYpSwcQ(1)調 AAS
>>279 JavaScript
const arr = ['apple', 'banana', 'orange', 'mango'];
const last = ' and ' + arr.pop();
console.log(arr.join`, ` + last);
//=> apple, banana, orange and mango
281: 2019/02/21(木)19:17 ID:eUc7EqKm(1/2)調 AAS
>>279 python
l = [ 1,2,3,4,5]
print( *l[0:-1] ,'and' , l[-1])
# 1 2 3 4 and 5
282(1): 2019/02/21(木)19:27 ID:2zdYL4u2(1/5)調 AAS
>>279
Haskell
main = putStrLn.concat.concat $ [map addCanma (init lst),["and,"],[last lst]]
addCanma s = s ++ ","
lst = ["apple","banana","orange","mango"]
output:
apple,banana,orange,and,mango
289(1): 2019/02/21(木)21:09 ID:y3+CYNZ6(1)調 AAS
>>279 Common Lisp
(format t "~{~@{~A~^~#,1^, ~}~^ and ~A~}~%" (list 1 2 3 4))
https://ideone.com/6DcwO9
295: 279 2019/02/21(木)21:39 ID:1axkeZoV(2/2)調 AAS
>>279 pike
https://ideone.com/0nn6Wt
297(1): 2019/02/21(木)22:55 ID:2zdYL4u2(4/5)調 AAS
>>279
>>292
Haskellでもワンライナー出来たけど、読みやすいとは思えない。(横長だし)
発想としては(要素数2以上なら)最後以外の要素(文字列)の頭に','追加して、全部結合して(大きな文字列にして)最後に頭の','を省く。
main = putStrLn.tail.concat $ if length lst < 2 then lst else [(concat.(map (\x -> ',':x)).init) lst," and ",last lst]
lst = map show [0..5]
個人的に >>287 の方が発想も読みやすさも好みの書き方。
(読み難くなるなら関数分ける派)
pythonのはワンライナーでも比較的読みやすくて、ちょっと羨ましい。
300(1): 2019/02/22(金)00:04 ID:EatRhjER(1/2)調 AAS
>>279 Squeak/Pharo Smalltalk
(0 to: 3) asCommaStringAnd "=> '0, 1, 2 and 3' "
301: 2019/02/22(金)00:07 ID:wSgiM5bY(1/2)調 AAS
>>299
アンカー間違えた >>279 宛だった…orz
>>279 もう一丁 Perl5
sub g {
my $z = ' and '.pop @_ if @_ > 1;
join(', ', @_).$z;
}
use feature say;
say g(qw[red green black white]);
say g(qw[apple banana]);
say g(qw[one]);
実行結果
~ $ perl 13_279_and_2.pl
red, green, black and white
apple and banana
one
305(1): 2019/02/22(金)06:09 ID:HhIJRo4K(1/2)調 AAS
>>279
Smalltalk (Pharo 7)
#('apple' 'banana' 'orange' 'mango') asCommaStringAnd
==> 'apple, banana, orange and mango'
#('apple' 'banana') asCommaStringAnd
==> 'apple and banana'
#('apple') asCommaStringAnd
==> 'apple'
306: 2019/02/22(金)06:36 ID:S1fPIClY(1)調 AAS
>>279 python
def f(lst): return ('空だ' if not lst else
','.join([str(x) for x in lst[:-1]])
+ (' and ' if len(lst)>1 else'')
+ str(lst[-1])
)
print(f( [ 1,'二',3,4,'五'] )) # 1,二,3,4 and 五
print(f( [1,'二'] )) # 1 and 二
print(f( [1] )) # 1
print(f([])) # 空だ
308: 2019/02/22(金)07:58 ID:6TNKk8ap(1/2)調 AAS
>>279 Ruby
f = -> a {a[0..-2].join(', ').sub(/.\K\z/, ' and ') << a[-1].to_s}
(-1..3).each{|r| puts f[[*0..r]]} # =>
0
0 and 1
0, 1 and 2
0, 1, 2 and 3
317: 2019/02/22(金)21:49 ID:2ARSyvEs(1)調 AAS
>>279
>>289
Common Lispで~#[...~]を使ってみた
(format t "~{~S~#[~; and ~:;, ~]~}" '(apple banana orage mango))
323: 2019/02/23(土)01:14 ID:9pS68leH(1/2)調 AAS
>>279
Kotlin script
最後のカンマを正規表現の文字列置換で and にしただけ。
println(listOf("abc", "def", "xyz").joinToString(", ").replace(",([^,]*)$".toRegex(), " and$1"))
出力
abc, def and xyz
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.064s