- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
public static IEnumerable<Tuple<A1, A2, A3, A4>>
CrossProduct<A1, A2, A3, A4>
(IEnumerable<A1> arg1, IEnumerable<A2> arg2,
IEnumerable<A3> arg3, IEnumerable<A4> arg4)
{
foreach (var a1 in arg1)
foreach (var a2 in arg2)
foreach (var a3 in arg3)
foreach (var a4 in arg4)
yield return Make.Tuple(a1, a2, a3, a4);
}
Webkill 21.06.2010 16:43 # −8
Webkill 21.06.2010 21:07 # −7
Webkill 22.06.2010 03:29 # −10
Говногость 22.06.2010 07:37 # −5
blackhearted 22.06.2010 11:37 # −8
Говногость 22.06.2010 07:36 # −2
tinynick 22.06.2010 10:50 # −1
На F# характерно обильное наличие FastFunc-ов и рефлектор обычно падает :-)
Webkill 22.06.2010 12:13 # −1
Инкрезон 22.06.2010 02:06 # −2
А если будет 5 -- то скопировать код ведь всегда легко!
И что такое "n ступенек"? n -- это же не число!
Я конечно завтра спрошу у Дениса Попова (он у нас в классе -- голова!), но скорее всего тут опечатка, потому что про n я не понял.
Webkill 22.06.2010 03:28 # −1
<pretrosyan>А ты, стало быть, жопа?</pretrosyan>
tinynick 22.06.2010 10:54 # −1
Юмор в том, что можно просто взять SelectMany и сделать сколько угодно раз.
ReallyBugMeNot 22.06.2010 13:37 # +2
tinynick 23.06.2010 08:49 # 0
соответственно
Если же тип одинаковый, и у нас есть операция t (*) x, скажем конкатенация, то можно и для любого n. Да-да.
tinynick 23.06.2010 09:15 # 0
последняя строчка выведет:
axA
axB
ayA
ayB
azA
azB
bxA
bxB
byA
byB
bzA
bzB
Естественно, количество элементов в xxx может быть любым ;-)