(aa bir çok olurdu, bb olmaz)
10! / 8 olacağını düşündüm! Ama görünüşe göre yanlış bir şey yapıyorum. Biri bana yardım edebilir mi?
(aa bir çok olurdu, bb olmaz)
10! / 8 olacağını düşündüm! Ama görünüşe göre yanlış bir şey yapıyorum. Biri bana yardım edebilir mi?
Yanıtlar:
6 farklı harfiniz vardır: a, b, c, d, e, f, iki farklı harf ile 6 x 5 = 30 kelime üretebilirsiniz. Ayrıca, aynı harfle 3 kelime aa, cc, dd'yi iki kez oluşturabilirsiniz. Yani toplam kelime sayısı 30 + 3 = 33'tür.
Zahava'nın yöntemine bir alternatif: af harflerinin ikisini eşleştirmenin yolu vardır. Ancak, 2 b, e veya f karakteri yoktur, bu nedenle "bb", "ee" ve "ff" mümkün değildir, bu da kelimelerinin sayısını oluşturur .36 - 3 = 33
Soruna yaklaşmaya çalıştığınız yol, 10 ayrı harf olmadığı gerçeğini görmezden geliyor gibi görünüyor. 10 farklı mektubunuz olsaydı, cevabınız doğru olurdu.
Eğer bunu "zekice" bir şekilde aklınızdan çıkaramazsanız, genellikle kaba kuvvet denemeye değer. Yapabileceğiniz tüm kelimelerin alfabetik sıralı bir listesini yazmaya çalıştığınızı düşünün.
"A" ile kaç kişi başlayabilir? Peki "A" yı A, B, C, D, E veya F izleyebilir, yani bu altı yol.
"B" ile kaç kişi başlayabilir? Bunu ikinci bir "B" olmadığı için sadece beş yol olan A, C, D, E veya F izleyebilir.
"C" ile kaç kişi başlayabilir? Listenizde "C" üç kez göründüğünden, bunu tek başına veya diğer beş harften biri izleyebilir, böylece "A" harfinde olduğu gibi altı yol vardır. "C" nin "A" dan daha fazla göründüğü için "fazladan" bir yol bulamadığımızı unutmayın; ikinci bir görünümün ötesinde her şey gereksizdir.
Artık listenizde yalnızca bir kez görünen her harfin beş kelimenin başında ve iki veya daha fazla görünen harflerin altı kelimenin başında görünebileceği açıktır. Yalnızca bir kez görünen harfler "B", "E" ve "F" dir, her biri beş kelimenin başında olabilir, böylece 5 + 5 + 5 = 15 kelime yapar. İki veya daha fazla görünen harfler "A", "C" ve "D" dir, her biri altı kelimenin başında olabilir, böylece 6 + 6 + 6 = 18 kelime yapar. Toplamda 15 + 18 = 33 kelime var.
Bu, diğer yöntemlerden daha uzun solukludur, ancak bu sistematik yoldaki cevabı düşünmeye çalışarak, daha hızlı yöntemlerden birini "tespit edebilirsiniz".
Bu bir olasılık sorusu olarak ifade edilmiş olsaydı, ilk eğiminizin bir ağaç diyagramı çizmek olabileceğini unutmayın . İlk harf için altı dalla başlayacaktı, ancak ikinci harf için "A", "C" ve "D" den altı dal çıkacaktı (çünkü bunları altı harften herhangi biri takip edebilir) ancak "B", "E" ve "F" den sadece beş dal çıkıyor (çünkü onlar kendileri takip edemiyorlar). Bu dallanma modeli cevabımdakiyle aynıdır, ancak bir ağaçta daha görsel olarak düşünmeyi tercih edebilirsiniz.
Matematiksel bir bakış açısıyla, çözüm, diyagonal çıkarıldığında, liste ile kendisi arasındaki kartezyen ürünün öğeleri kümesidir. Bu sorunu şu algoritmayı kullanarak çözebilirsiniz:
Küme, farklı nesnelerin iyi tanımlanmış bir koleksiyonudur, bu nedenle nesneler tekrarlanmaz.
from itertools import product
import numpy as np
letters = list("aabcccddef")
cartesianproduct = np.array(["".join(i) for i in product(letters,letters)]).reshape(10,10)
cartesianproduct
Out :
array([['aa', 'aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
['aa', 'aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
['ba', 'ba', 'bb', 'bc', 'bc', 'bc', 'bd', 'bd', 'be', 'bf'],
['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
['ca', 'ca', 'cb', 'cc', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'dd', 'de', 'df'],
['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'dd', 'de', 'df'],
['ea', 'ea', 'eb', 'ec', 'ec', 'ec', 'ed', 'ed', 'ee', 'ef'],
['fa', 'fa', 'fb', 'fc', 'fc', 'fc', 'fd', 'fd', 'fe', 'ff']],
dtype='|S2')
Köşegen kaldırıyoruz
diagremv = np.array([ np.delete(arr,index) for index,arr in enumerate(cartesianproduct)])
diagremv
array([['aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
['aa', 'ab', 'ac', 'ac', 'ac', 'ad', 'ad', 'ae', 'af'],
['ba', 'ba', 'bc', 'bc', 'bc', 'bd', 'bd', 'be', 'bf'],
['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
['ca', 'ca', 'cb', 'cc', 'cc', 'cd', 'cd', 'ce', 'cf'],
['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'de', 'df'],
['da', 'da', 'db', 'dc', 'dc', 'dc', 'dd', 'de', 'df'],
['ea', 'ea', 'eb', 'ec', 'ec', 'ec', 'ed', 'ed', 'ef'],
['fa', 'fa', 'fb', 'fc', 'fc', 'fc', 'fd', 'fd', 'fe']],
dtype='|S2')
Eleman setinin uzunluğunu hesaplıyoruz:
len(set(list(diagremv.flatten())))
Out: 33
Bazılarının sorunun belirsiz olduğunu düşünmesinin nedeni "2 harfli kelimeler" terimini kullanmasıdır. Herkesin bir çözüme yaklaşma şekli göz önüne alındığında, hepsi "2 harfli kelimeleri" "harf çiftleri" gibi bir anlama çeviriyor. Hevesli Scrabble oyuncusu olarak, ben hemen, demek soruyu aldı "Bu harflerin yapılabilir kaç meşru 2 harfli kelimeler?" Ve bu cevap - 12! En azından Resmi Scrabble Oyuncu Sözlüğü'nün (OSPD5) en son sürümüne göre. Kelimeler aa, ab, ad, ae, ba, be, da, de, ed, ef, fa ve fe'dir. (Bu kelimelerin birçoğunu daha önce hiç duymamış olmanızın geçerliliğini reddetmediğini lütfen unutmayın!); O)
Sadece "2 duygum".
Kaba kuvvet olmadan saymanın başka bir yolu:
İlk harf a, c veya d ise, ikinci harf için 6 ayrı seçenek vardır.
Ancak ilk harf b, e veya f ise, ikinci harf için yalnızca 5 ayrı seçenek vardır.
Sorunuzu sorma şeklinizde bir sorun var. "Aabcccddef" satırında hangi harflerin 2 harfli kelime almasına izin verilir? İkincisini değiştirebilir miyiz veya sadece gereksiz olanı geçebilir miyiz? Bu koşullara bağlı olarak iki olası cevap buldum:
1) Cevapları daha önce de belirtildiği gibi 33 gibi cevapları değiştirebiliriz. 30 çift farklı harf (6 * 5) ve 3 çift benzer harf.
2) Harf yerleri değiştiremezsek ve sadece geçebilirsek, çok daha az cevap alırız. Başından sonuna kadar sayalım. "A" ile başlayarak ikinci olmak üzere 6 harfimiz var, "b" ile başlayarak sadece 4'tür. "C" de 4, "d" - 3 ve "e" - 1'dir. 1. Tamamen 18'dir.
soruya cevabım: aabcccddef'den kaç tane 2 harfli kelime alabilirsin
* // Buradaki soru, çiftlerin kombinasyonları değil, "kelimeler" olarak okunur. Kelimeyi kullanarak, kelimeyi bir kereden fazla kullanmak için iki kez görünmesi gerekir, örneğin 'a' harfinin ikisi ve 'd' harfinin ikisi vardır, bu nedenle 'reklam' kelimesini iki kez bir kelime olarak yazmak mümkündür.
[self-study]
etiketi ekleyin ve wiki'sini okuyun .