異なる言語が配列を結合できる方法に興味がありますが、単一の結合文字列を使用するのではなく、特定の間隔で異なる結合文字列を使用します。
例(架空の言語):
Array.modJoin([mod, char], ...)
e.g. [1,2,3,4,5].modJoin( [1, ","], [2, ":"] )
引数が modulo と join char を含む配列またはオブジェクトを指定する場合、実装は modulo のどの順序が優先されるか (最新のもの) をチェックし、join char を適用します。([mod,char] が mod の昇順で提供されている必要があります)
すなわち
if (index % (nth mod) == 0)
append (join char)
continue to next index
else
(nth mod)-- repeat
when complete join with ""
たとえば、私は Ruby で次のことを思いつきましたが、より優れた、より洗練された方法が存在すると思われます。それが私が見たいものです。
#Create test Array
#9472 - 9727 as HTML Entities (unicode box chars)
range = (9472..9727).to_a.map{|u| "&##{u};" }
mod と join char のリストがあると仮定すると、リストが進むにつれて mod の値が増加することを規定する必要があります。
mod_joins = [{m:1, c:",", m:12, c:"<br/>"]
今すぐ処理range
しますmod_joins
processed = range.each_with_index.map { |e, i|
m = nil
mods.reverse_each {|j|
m = j and break if i % j[:m] == 0
}
# use the lowest mod for index 0
m = mods[0] if i == 0
m = nil ? e : "#{e}#{m[:c]}"
}
#output the result string
puts processed.join ""
,
これから、インデックスが 12 モジュロでない限り、によって区切られた htmlEntities のリストが得られます。<br/>
したがって、主に Haskell、F#、Common Lisp (Scheme、Clojure) などの関数型言語でこれをよりエレガントに行う方法に興味がありますが、リスト内包表記拡張機能を持つ汎用言語でこれを実現するクールな方法にも興味があります。 Linq、Ruby、Python、さらには Perl を使用した C# として。