Bilgisayar bilimcileri olarak, pop ve push'ın temel liste işlemlerini muhtemelen biliyorsunuzdur . Bunlar bir eleman listesini değiştiren basit işlemlerdir. Ancak, operasyon flopunu hiç duydunuz mu? ( flip- flop'ta olduğu gibi )? Bu oldukça basit. Bir sayısı göz önüne alındığında , n , ilk ters n listesinin elemanları. İşte bir örnek:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a.flop(4)
[4, 3, 2, 1, 5, 6, 7, 8, 9, 10]
Flop işlemi ile ilgili en güzel şey, onu sıralama gibi bir listeye güzel şeyler yapmak için kullanabilmenizdir . Flop ile benzer bir şey yapacağız:
Bir tamsayı listesi verildiğinde, "Komşu". Başka bir deyişle, her yinelenen öğenin art arda görünmesini sağlayacak şekilde sıralayın.
Bu floplar ile yapılabilir! Örneğin, aşağıdaki listeyi alın:
>>> a = [3, 2, 1, 4, 3, 3, 2]
>>> a.flop(4)
[4, 1, 2, 3, 3, 3, 2]
>>> a.flop(3)
[2, 1, 4, 3, 3, 3, 2]
>>> a.flop(6)
[3, 3, 3, 4, 1, 2, 2]
Bu bizi bugünün zorluğunun tanımına götürür:
Bir tamsayı listesi verildiğinde, listenin komşulmasına neden olacak herhangi bir flop kümesini çıktılar.
Örnek olarak son listeyi kullanarak çıktı almalısınız:
4
3
6
çünkü listeyi 4'e, sonra 3'e, ardından 6'ya kaydırmak komşu bir listeye neden olacaktır. Eğer do unutmayın değil mümkün olan en kısa listesini yazdırmak için gereken komşular bir liste flop. Yazdıysanız:
4
4
4
3
1
1
6
2
2
Bunun yerine, bu hala geçerli bir çıktı olacaktır. Ancak, hiçbir zaman listenin uzunluğundan daha büyük bir sayı veremezsiniz . Bunun nedeni bir liste için a = [1, 2, 3]
aramaların a.flop(4)
saçma olmasıdır.
İşte bazı örnekler:
#Input:
[2, 6, 0, 3, 1, 5, 5, 0, 5, 1]
#Output
[3, 7, 8, 6, 9]
#Input
[1, 2]
#Output
<any list of integers under 3, including an empty list>
#Input
[2, 6, 0, 2, 1, 4, 5, 1, 3, 2, 1, 5, 6, 4, 4, 1, 4, 6, 6, 0]
#Output
[3, 19, 17, 7, 2, 4, 11, 15, 2, 7, 13, 4, 14, 2]
#Input
[1, 1, 1, 1, 2, 2, 2, -1, 4]
#Output
[]
#Input
[4, 4, 8, 8, 15, 16, 16, 23, 23, 42, 42, 15]
#Output
[12, 7]
Bu örneklerin her birinde, verilen çıktının yalnızca bir geçerli potansiyel çıktı olduğunu unutmayın. Daha önce de söylediğim gibi , verilen listeye komşu olan herhangi bir flop seti geçerli bir çıktıdır . Belirli bir flop listesinin bir listeyle doğru şekilde komşuluk edip etmediğini doğrulamak için bu python komut dosyasını kullanabilirsiniz .
Herhangi bir makul formatta girdi ve çıktı alabilirsiniz. Örneğin, fonksiyon argümanları / return değeri, STDIN / STDOUT, bir dosyayı okumak / yazmak vb. Geçerlidir. Her zamanki gibi, bu kod golf , bu yüzden mümkün olan en kısa programı yapın ve eğlenin! :)