Mathematica, 84 bayt
(x="war""peace")(y="freedom""slavery")(z="ignorance""strength")/#/.x->1/.y->1/.z->1&
açıklama
Dizeleri ile daha fazla "aritmetik"! Bağlantılı cevapta olduğu gibi, bu, Mathematica'da dizelerini "çarpmadan" (onları atanmamış iki değişkeni çarpma işlemine benzer x*y
), ancak Mathematica'nın bir bölümdeki faktörleri iptal etme gibi temel basitleştirmeler uygulayacağı gerçeğine dayanmaktadır .
Bu yüzden de ürünleri gibi üç çift depolayarak başlamak x
, y
, z
sırasıyla ve hepsini bir araya çarpın:
(x="war""peace")(y="freedom""slavery")(z="ignorance""strength")
Bu değerlendirir
"freedom" "ignorance" "peace" "slavery" "strength" "war"
(Mathematica otomatik olarak faktörleri sıralar, ancak düzeni umursamıyoruz.)
Mathematica faktörleri iptal ettiğinden bunu istemediğimiz sözcüğü kaldırma girişine böleriz .../#
. Örneğin, eğer giriş "peace"
biz olsaydı:
"freedom" "ignorance" "slavery" "strength" "war"
Son olarak, biz her yerine, biz ilgilenmiyoruz çiftleri kurtulmak x
, y
ve z
ile 1
. Yine, Mathematica'nın sadeleştirmesi 1*a
, her zaman olduğu gibi başlıyor a
. Bu kısım şununla yapılır:
/.x->1/.y->1/.z->1
İşin güzel yanı, Mathematica'nın çarpmanın, Orderless
üründe bitişik olup olmadıklarına bakılmaksızın iki faktörü bulabilmesi olduğunu bilmesidir . Sadece girişin karşıtı olan sözcük artık üründe eşlenmez, böylece çıkartılamaz ve tek çıktı olarak kalır.