Bir programlama zorluğu yapıyorum ve zorluklardan biriyle deliriyorum. Zorlukta, bir dizenin MD5'ini hesaplamam gerekiyor. dize aşağıdaki biçimde verilir:Aynı karakterin birden çok kez yanması
n[c]
: n
bir sayıdır ve c
bir karakteridir. Örneğin: Ben şu dizeyi verildi dek b3[a2[c]]
=>baccaccacc
Her şey yolunda gitti:
1[2[3[4[5[6[7[8[9[10[11[12[13[a]]]]]]]]]]]]]
Bu dizeleri 6227020800 a
's ile bir dize dönüşür. Bu dize 6GB'tan fazla, bu yüzden pratik zamanda hesaplamak neredeyse imkansız. Yani, benim sorum:
Burada kullanabileceğim MD5'in özellikleri var mı?
Bunu kısa sürede yapmak için bir form olması gerektiğini biliyorum ve bunun, tüm dizenin birden çok kez tekrarlanan aynı karakterle ilgili olması gerektiğinden şüpheleniyorum.
Muhtemelen basit, geriye doğru arama yapmak ve ilk ortaya çıkan yeri bulmak olacaktır. ['Karakterini, '[' ('13', yani 13 *' '') sonra bir dizgiyi bir değişkene boğun, bir sonraki' ['ve' 'mystoredstring * num'' 'ifadesini kullanın. – Torxed
@Torxed Bu soru, asıl dizgeyi kompakt göstergesinden elde etmekle ilgili değildir. mektubu OP'nin zaten belirttiği gibi bir 6227020800 zamanıdır, ancak bu kadar büyük bir dizginin MD5 hashını verimli bir şekilde hesaplamak için. – Carsten
Makinemdeki CPU süresinin yaklaşık 14 saniyesinde hesaplayabilirim. "Pratik zamanı" nasıl tanımlarsınız? – Aya