NP yapın: en büyük klik bulmak


22

Arka fon

Bunu yazarken, P'ye karşı NP sorunu hala çözülmedi, ancak Norbert Blum'un P! = NP'nin zaten hatalı olduğundan şüphelenilen kanıtı olduğunu iddia eden yeni makalesini duymuş olabilirsiniz (ama göreceğiz).

Bu yazıda tartışılan sorun klik sorunudur . En azından bir gazete makalesinde okuduğum şey buydu, bu yüzden yanılıyorsam düzeltin, ancak her durumda, aşağıdaki değişkeni çözen bir program yazmanızı istiyorum:

Görev

Bir sürü öğrencimizle büyük bir okulumuz olduğunu varsayalım. Bu öğrencilerin her birinin bu okulda bazı arkadaşları var. Bir klik öğrencilerin sadece arkadaşsınız öğrencilerinden oluşan bir grup birbirlerine üyesi .

Programınıza girdi olarak arkadaş olan öğrenci çiftleri verilecektir. Bu bilgiden, programın en büyük kliğin boyutunu bulması gerekir . Öğrenciler tamsayı kimlikleri ile tanımlanır .

Matematiksel terimleri tercih ederseniz, bu, her biri iki düğüm tarafından tanımlanan, yönlendirilmemiş bir grafiğin kenarlarını beslediğiniz anlamına gelir.

Giriş

Girişiniz, boş bir pozitif tamsayı çifti listesi olacaktır, örn [[1,2],[2,5],[1,5]]. Bu girişi herhangi bir mantıklı biçimde, örneğin bir dizi dizisi, her biri iki sayı içeren metin satırları vb.

Çıktı

Beklenen çıktı tek bir sayıdır n >= 2: en büyük kliğin boyutu. Yukarıdaki örnek girdiyle, sonuç 3tüm öğrenciler ( 1, 2ve 5) birbirleriyle arkadaş oldukları için olur.

Test durumları

[[1,2]]
=> 2

[[1,2],[3,1],[3,4]]
=> 2

[[1,2],[2,5],[1,5]]
=> 3

[[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]]
=> 4 (the largest clique is [1,3,4,5])

[[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]]
=> 3 (the largest clique is [23,764,1073])

[[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52],
 [52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565],
 [1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860],
 [1296,1860],[1860,52],[711,1639]]
=> 6 (the largest clique is [52,316,711,1296,1565,1650])

Diğer sınama durumlarının sonuçlarını doğrulamak için bu (aptal) referans uygulamasını ( -dbayrakla ek çıktılar basar ) kullanabilirsiniz .

Kurallar

  1. Programınız geçersiz girdilerde tanımlanmış bir sonuç gerektirmiyor. Yani bunu varsayabilirsin:
    • her zaman en az bir çift kimlik alacaksınız
    • her çift iki farklı kimlikten oluşur.
    • hiçbir çift iki kez görünmüyor (ID yerlerinin değiştirilmesi yine aynı çift olacaktı)
  2. Algoritmanızın giriş boyutuna bir üst sınır koymasına izin verilmez. Tamamen teknik sınırlamalar ve dil / ortamınız tarafından belirlenen sınırlamalar (yığın boyutu, hesaplama süresi vb.) Elbette kaçınılmazdır.
  3. Standart boşluklar yasaktır.
  4. Bu , yani bayt cinsinden ölçülen en kısa kod kazanır.
  5. Algoritmanız polinom zaman karmaşıklığına sahipse -1, kod boyutunuzdan bağımsız olarak hemen puan alırsınız , ancak bu durumda çözümünüzü başka bir yere göndermek isteyebilirsiniz. ;)

4
Bunu yapacak (veya yapmaya çalışacak) biri olacağını neredeyse garanti edebilirim, bu yüzden çıkarmanız daha güvenli olur. İnsanları yaptıkları için ödüllendirmek istiyorsanız, polinom zamanı yapan en kısa cevaba bir ödül sunabilirsiniz .
Caird coinheringaahing

4
Birisi bunu yaparsa @cairdcoinheringaahing -1, iyi hak kazanmıştır ;)
Felix Palmen

13
@cairdcoinheringaahing Biri P = NP olduğunu kanıtlamayı başardıysa, kod golf probleminde otomatik olarak en düşük puana sahip olanlar endişelerimizin en küçüğüdür. Bununla birlikte, Kural 5, bu zorluğa gerçekten fazla katkıda bulunmadığından, kaldırılması gerektiğine katılıyorum.
Mego

11
@Mego sadece CMI tarafından sunulan 1 milyon dolarlık şaka ve minik ikramiye katkıda bulunuyor .
Felix Palmen,

30
Eh, bazı "bilimsel mizah" anlayışı olan az sayıda insan lehine olmaz. Lütfen bununla ilgili daha fazla öneride bulunma, teşekkürler :)
Felix Palmen

Yanıtlar:


6

Jöle ,  15 18  16 bayt

Benim yönteminde hataları düzeltmek için +3 bayt. Miller
sayesinde -2 bayt ( n × (n-1) ÷ 2 = nC2 olduğuna dikkat edin )

ẎQL©c2⁼Lȧ®
ŒPÇ€Ṁ

Arkadaşlık listesini (kenarları) alan ve bir tamsayı döndüren tek taraflı bir bağlantı.

Çevrimiçi deneyin! hafızadaki kenarların güç setini oluşturur, bu nedenle hem boşlukta hem de zaman içinde verimsizdir (evet, bu O (2 n ) millet)!

Nasıl?

ẎQL©c2⁼Lȧ® - Link 1, isClique?: list, edges  e.g. [[1,3],[2,3],[3,4],[4,1],[4,2],[2,1]]
Ẏ          - tighten                              [ 1,3 , 2,3 , 3,4 , 4,1 , 4,2 , 2,1 ]
 Q         - de-duplicate (gets unique ids)          [1,3,2,4]
  L        - length (get number of people involved)  4
   ©       - (copy to the register)
    c2     - combinations of 2 (z-choose-2)          6
       L   - length (of edges)                       6
      ⁼    - equal?                                  1
         ® - recall value from register              4
        ȧ  - logical and                             4
           - (Note: the number of edges of a clique of size n is n*(n-1) and we're
           -  guaranteed no repeated edges and that all edges are two distinct ids)

ŒPÇ€Ṁ - Link: list of lists, edges
ŒP    - power-set (all possible sets of edges (as lists))
  Ç€  - call last link (1) as a monad for €ach
    Ṁ - maximum

Vay, vaktiniz olduğunda açıklama lütfen
Bay Xcoder

@EriktheOutgolfer Katılıyorum. Muhtemelen kurtarmaya kod ekleyebilirim ...
Jonathan Allan



@miles - nice, ondan 15 tane almaya çalışırken biraz zaman geçirdim, mümkün olması gerektiğini hissediyorum!
Jonathan Allan,

13

Mathematica, 34 bayt

Tr[1^#&@@FindClique[#<->#2&@@@#]]&  

Temel olarak FindClique işi yapar ve "g grafiğindeki en büyük klibi bulur".
Diğer tüm şeyler giriş listesini grafiğe dönüştürüyor

Giriş

[{{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}, {1, 5}, {5, 4}}]

Çıktı

4

Giriş

[{{1296, 316}, {1650, 316}, {1296, 1650), {1296, 52}, {1650, 711), {711, 316), {1650, 52), {52, 711), {1296, 711), {52, 316), {52, 1565), {1565, 1296), {1565, 316), {1650, 1565), {1296, 138), {1565, 138), {1565 , 711), {138, 1650), {711, 138), {138, 144), {144, 1860), {1296, 1860), {1860, 52), {711, 1639)}]

Çıktı

6

-10 bayt için @Kelly Lowder


23
Tabii ki Mathematica'nın bunun için bir yerleşimi var.
Outgolfer Erik,

1
10 Bayt ile TıraşTr[1^#&@@FindClique[#<->#2&@@@#]]&
Kelly Lowder

12
FindCliqueಠ ___ ಠ
Bay

6

Jöle , 20 bayt

ŒPẎ€µQL’=ċЀ`ẠµÐfṪQL

Çevrimiçi deneyin!

Tabii ki bu milyonu haketmiyor: p

Bu, µ(...)µve 2 bayt olmasa Pyth'i yenerdi Ðf.


Şaşırtıcı. Şimdi de pes edebilirim.
Mark Thomas,

@FelixPalmen kaba kuvvet: p
Outgolfer Erik,

@EriktheOutgolfer Kodun çalışma zamanını kastetmedim;)
Felix Palmen

@FelixPalmen Yani, kaba kuvvet yaklaşımı fazla düşünmeye ihtiyaç duymuyor: p
Outgolfer Erik

En büyük test senaryosuna sahip bir MemoryError verir :( Elbette hala geçerli, bu bir "teknik sınırlama" - ancak meraktan uzak, jöle ile kullanılabilir kaynakları artırmanın bir yolu var mı?
Felix Palmen

3

J , 36 bayt

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#

Çevrimiçi deneyin!

O (2 n ) zamanında çalışır, burada n çiftlerin sayısıdır.

65 byte için daha hızlı bir çözüm

3 :'$>{._2{~.@((+.&(e.&y)&<|.)@(-.,-.~)&>/#&,/:~@~.@,&.>/)~^:a:y'

Çevrimiçi deneyin!

açıklama

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#  Input: list of pairs
                                   #  Length
                           2      ^   2^n
                               i.@    Range [0, 2^n)
                            #:@       Binary
                         #~           Copy
      (                )@             For each
                      ,                 Flatten
                   ~.@                  Unique
                 #@                     Length
        (       )                       Dyad with RHS at previous and LHS as next
               ]                          Get RHS
             2!                           Binomial coefficient, choose 2
            =                             Equals
           [                              Get LHS
          *                               Times
         ]                                Get RHS
       #                                Length
[:>./                                 Reduce using maximum


2

Python 2,180 bayt

G=input()
m=0
L=len
for i in range(2**L(G)):
 u=[];p=sum([G[j]for j in range(L(G))if 2**j&i],u)
 for j in p:u+=[j][j in u:]
 m=max(m,L(u)*all(p.count(j)==L(u)-1for j in u))
print m

Çevrimiçi deneyin!

-2 shooqie'ye teşekkürler .
-1, Bay Xcoder'a teşekkürler .
-3 özyinelemeli sayesinde .


lenBir değişkene atayarak iki bayttan tasarruf edebilirsiniz
shooqie

183 bayt . (x not in y)anlamına gelir 0**(x in y).
Bay Xcoder

@ Mr.Xcoder Kısaltmanın bir yolu olduğunu biliyordum! Teşekkürler!
Outgolfer Erik,

Bunu daha önce hiç kullanmamıştım, sadece birkaç gün önce aklımdan geçen ama henüz bir fayda bulamadığım bir numara.
Bay Xcoder,

@ Mr.Xcoder Önemli değil, eğer çalışıyorsa o zaman neden olmasın? : D BTW 0**ile de değiştirebilirsiniz -~-.
Outgolfer Erik,

1

Pyth, 28 bayt

l{sSef<T.{SMQm.{ft{T.Cd2yS{s

Çevrimiçi deneyin

açıklama

l{sSef<T.{SMQm.{ft{T.Cd2yS{s
                         S{sQ  Get the distinct nodes in the (implicit) input.
                        y      Take every subset.
             m      .Cd2       Get the pairs...
                ft{T           ... without the [x, x] pairs...
              .{               ... as sets.
     f<T                        Choose the ones...
        .{  Q                   ... which are subsets of the input...
          SM                    ... with edges in sorted order.
    e                           Take the last element (largest clique).
l{sS                            Get the number of distinct nodes.

1

Python 3 , 162 159 bayt

lambda x,f=lambda x:{i for s in x for i in s}:len(f(x))if all([(y,z)in x or(z,y)in x for y in f(x)for z in f(x)if y<z])else max(c(x.difference({y}))for y in x)

Çevrimiçi deneyin!

Fonksiyon C bir dizi şeklinde köşe alır kriteri (x az y'den olduğu {(x, y), ...}) küpe. "Entry" adlı bir işlev, sıralanmamış listeler biçimindeki verilerle test etmek için TIO başlığındadır . Clique ise uzunluğu döndürür. Klik değilse, tepe noktalarının maksimum klik boyutunu döndürür, her bir köşe noktası için tepe noktaları. TIO'daki son test vakasındaki süreyi aşıyor

Güncelleme: "veya (z, y) x" kısmına, "f = lambda x dizilimine olan bağımlılığı ortadan kaldırmak için eklendi": sete sarılı yerine itertools.chain yerine s için "in x} i}".

-Jusathan Allen sayesinde -si 3 bayt



Bir kenara - isimlendirmenize gerek yok c, bu yüzden kaldırabilirsiniz c=( c=\başlığın sonuna koymanız ve lambdaTIO kod bloğunun en üstüne yerleştirmeniz gerekir)
Jonathan Allan

Ayrıca size kurtulabilirsinizs ve değiştirme s(...)ile {*...}de bazı alanlarda ayrılmasına olanak sağlamak.
Jonathan Allan

1
@JonathanAllan, sıralamada sabitlik
Conner Johnston


1

Jöle , 28 bayt

œ^e³;U¤
Œcç/Ðfœ|Ṣ¥/€QµÐĿ-ịḢL

Çevrimiçi deneyin!

Son test senaryosunu TIO'da bir saniyede çözebilecek daha hızlı bir çözüm.


Ve bunun ne gibi karmaşıklığı var? O (2ⁿ) ' den daha düşük bir şey ise, 1.000.000 $' ı hak eder.
Outgolfer Erik,

1
@EriktheOutgolfer, yanılıyorsunuz, O (1.1888ⁿ) çalışma zamanı olan algoritmalar var .
rus9384

Buna ek olarak, bir milyon değerinde olmak üzere n, yalnızca üslerde görünebilir :)
Felix Palmen

@FelixPalmen veya yapamam. Neyse, milyonlarca için iki ifadeden birinin kanıtlanması gerekir.
rus9384

1
Bunun O (1.414 ^ n) olduğuna inanıyorum. Giriş tam bir grafik olduğunda daha kötü performans görebilirsiniz.
mil:

1

Java + Guava 23.0, 35 + 294 = 329 bayt

import com.google.common.collect.*;
a->{int l=0,o=1,c,z=a.size();for(;o>0&l<z;){o=0;c:for(Iterable<int[]>s:Sets.combinations(a,l*(l+1)/2)){Multiset<Integer>m=TreeMultiset.create();for(int[]x:s){m.add(x[0]);m.add(x[1]);}c=m.elementSet().size();for(int e:m.elementSet())if (m.count(e)!=c-1)continue c;l+=o=1;break;}}return z<3?2:l;}

Bu algoritma grafik değildir, bunun yerine belirli bir büyüklükteki tüm çift kombinasyonlarını oluşturur. Tüm çift kombinasyonlarını çoklu ayara beslerim ve hepsinin beklenen boyuta sahip olduğunu kontrol ederim (benzersiz girişlerin sayısı - 1). Eğer yaparlarsa, bir klik buldum ve daha büyük bir tane aramaya gidiyorum.

Guava kütüphanesinden yeni combinationsmetodu ve alet toplama tipini kullanıyorum Multiset.

Ungolfed

import com.google.common.collect.*;
import java.util.function.*;

public class Main {

  public static void main(String[] args) {
    ToIntFunction<java.util.Set<int[]>> f
        = a -> {
          int l = 0, o = 1, c, z = a.size();
          for (; o > 0 & l < z;) {
            o = 0;
            c:
            for (Iterable<int[]> s : Sets.combinations(a, l * (l + 1) / 2)) {
              Multiset<Integer> m = TreeMultiset.create();
              for (int[] x : s) {
                m.add(x[0]);
                m.add(x[1]);
              }
              c = m.elementSet().size();
              for (int e : m.elementSet()) {
                if (m.count(e) != c - 1) {
                  continue c;
                }
              }
              l += o = 1;
              break;
            }
          }
          return z < 3 ? 2 : l;
        };
    int[][][] tests = {
      {{1, 2}},
      {{1, 2}, {3, 1}, {3, 4}},
      {{1, 2}, {2, 5}, {1, 5}},
      {{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}, {1, 5}, {5, 4}},
      {{15, 1073}, {23, 764}, {23, 1073}, {12, 47}, {47, 15}, {1073, 764}},
      {{1296, 316}, {1650, 316}, {1296, 1650}, {1296, 52}, {1650, 711}, {711, 316}, {1650, 52}, {52, 711}, {1296, 711}, {52, 316}, {52, 1565}, {1565, 1296}, {1565, 316}, {1650, 1565}, {1296, 138}, {1565, 138}, {1565, 711}, {138, 1650}, {711, 138}, {138, 144}, {144, 1860}, {1296, 1860}, {1860, 52}, {711, 1639}}
    };
    for (int[][] test : tests) {
      java.util.Set<int[]> s = new java.util.HashSet<int[]>();
      for (int[] t : test) {
        s.add(t);
      }
      System.out.println(f.applyAsInt(s));
    }
  }
}

Ben olurdum çok bkz şaşırttı keyfi grafiklerde Bulma maksimum klikler ben :) Java ile çok aşina değilim ama bu kodu analiz etmek biraz zaman alacağım -
Felix Palmen

@FelixPalmen Bu meydan okumayı sevdim, bu yüzden cevabım ne olursa olsun kalmaya devam edecek, ancak polinom karmaşıklığı değilse "-1" i kaldırmakta tamamen iyiyim. O zaman muhtemelen bazı kitapları gözden
geçirmeliyim

" Boyutun birleşimi xpolinomdur " <- emin misiniz? Sanırım kullanılan yöntem bu . Dönüş değeri AbstractSetbir yineleyici ile birlikte ve yanılmıyorsam aşağıdaki fordöngü bu yineleyici x!zamanlarını arayacak ...
Felix Palmen

Düzeltme: x < n( ngirdi setinin tam büyüklüğü ile) olduğu sürece n!/(x!(n-x)!), yine de polinom değil :)
Felix Palmen

@FelixPalmen Büyük olasılıkla haklısın. Ayrıca, (ki tamamen mümkün) bir combinationsyöntem X^nyaparsam, başarabileceğimi mi söylüyorsunuz ? Bu arada, "-1" iddiamı da kaldırdım.
Olivier Grégoire


0

6502 makine kodu (C64), 774 703 bayt

(Sadece bunu yapmak zorunda kaldım , C64'üm her şeyi yapabilir ... hehe)

HexDump:

00 C0 A9 00 A2 08 9D 08 00 CA 10 FA A2 04 9D FB 00 CA 10 FA 20 54 C0 B0 20 AD 
C9 C2 AE CA C2 20 92 C1 B0 31 8D 31 C0 AD CB C2 AE CC C2 20 92 C1 B0 23 A2 FF 
20 FE C1 90 DB 20 6A C2 20 C1 C1 B0 05 20 6A C2 50 F6 A5 FB 8D D3 C2 20 43 C1 
A9 CD A0 C2 20 1E AB 60 A2 00 86 CC 8E 61 C0 20 E4 FF F0 FB A2 FF C9 0D F0 10 
E0 0B 10 0C 9D BD C2 20 D2 FF E8 8E 61 C0 D0 E5 C6 CC A9 20 20 D2 FF A9 0D 20 
D2 FF A9 00 9D BD C2 AA BD BD C2 F0 5C C9 30 30 0E C9 3A 10 0A 9D CD C2 E8 E0 
06 F0 4C D0 E9 C9 20 D0 46 A9 00 9D CD C2 E8 8E BC C0 20 EB C0 AD D3 C2 8D C9 
C2 AD D4 C2 8D CA C2 A2 FF A0 00 BD BD C2 F0 0F C9 30 30 21 C9 3A 10 1D 99 CD 
C2 C8 E8 D0 EC A9 00 99 CD C2 20 EB C0 AD D3 C2 8D CB C2 AD D4 C2 8D CC C2 18 
60 38 60 A2 FF E8 BD CD C2 D0 FA A0 06 88 CA 30 0A BD CD C2 29 0F 99 CD C2 10 
F2 A9 00 99 CD C2 88 10 F8 A9 00 8D D3 C2 8D D4 C2 A2 10 A0 7B 18 B9 53 C2 90 
02 09 10 4A 99 53 C2 C8 10 F2 6E D4 C2 6E D3 C2 CA D0 01 60 A0 04 B9 CE C2 C9 
08 30 05 E9 03 99 CE C2 88 10 F1 30 D2 A2 06 A9 00 9D CC C2 CA D0 FA A2 08 A0 
04 B9 CE C2 C9 05 30 05 69 02 99 CE C2 88 10 F1 A0 04 0E D3 C2 B9 CE C2 2A C9 
10 29 0F 99 CE C2 88 10 F2 CA D0 D9 C8 B9 CD C2 F0 FA 09 30 9D CD C2 E8 C8 C0 
06 F0 05 B9 CD C2 90 F0 A9 00 9D CD C2 60 85 0A A4 09 C0 00 F0 11 88 B9 D5 C2 
C5 0A D0 F4 8A D9 D5 C3 D0 EE 98 18 60 A4 09 E6 09 D0 01 60 A5 0A 99 D5 C2 8A 
99 D5 C3 98 99 D5 C4 18 60 A6 0B E4 09 30 01 60 BD D5 C5 C5 0B 30 09 A9 00 9D 
D5 C5 E6 0B D0 E9 A8 FE D5 C5 8A 29 01 D0 02 A0 00 BD D5 C4 59 D5 C4 9D D5 C4 
59 D5 C4 99 D5 C4 5D D5 C4 9D D5 C4 A9 00 85 0B 18 60 A8 A5 0C D0 08 A9 20 C5 
0D F0 21 A5 0C 8D 1E C2 8D 21 C2 A5 0D 09 60 8D 1F C2 49 E0 8D 22 C2 8C FF FF 
8E FF FF E6 0C D0 02 E6 0D 18 60 86 0E 84 0F A5 0D 09 60 8D 54 C2 49 E0 8D 5F 
C2 A6 0C CA E0 FF D0 10 AC 54 C2 88 C0 60 10 02 18 60 8C 54 C2 CE 5F C2 BD 00 
FF C5 0E F0 04 C5 0F D0 E0 BD 00 FF C5 0E F0 04 C5 0F D0 D5 38 60 A2 00 86 FC 
86 FD 86 FE BD D5 C4 A8 A6 FE E4 FC 10 11 BD D5 C7 AA 20 2B C2 90 14 E6 FE A6 
FE E4 FC D0 EF A6 FD BD D5 C4 A6 FC E6 FC 9D D5 C7 E6 FD A6 FD E4 09 D0 16 A6 
FB E4 FC 10 0F A2 00 BD D5 C7 9D D5 C6 E8 E4 FC D0 F5 86 FB 60 A0 00 84 FE F0 
B5

Çevrimiçi demo

Kullanımı: ile başlayın sys49152, sonra çiftleri örneğin;

15 1073
23 764
23 1073
12 47
47 15
1073 764

Backsapce değildir girişi sırasında ele (ancak kullanırsanız vice, sadece emülatörü içine girdi kopyalayıp yapıştırın). Hesaplamayı başlatmak için boş bir satır girin.

Buraya açıklayıcı bir demontaj listesi göndermek için çok büyük, ancak ca65 tarzı derleme kaynağına göz atabilirsiniz . Algoritma çok verimsizdir, düğümlerin mümkün olan her permütasyonunu oluşturur ve bunların her biri, açgözlülükle tüm kenarları kontrol ederek bir klik oluşturur. Bu , O (n) 'nin (bu küçük RAM'e sahip bir makinede önemli olan ) bir yer verimliliği sağlar , ancak korkunç çalışma zamanı verimliliğine (*) sahiptir . Teorik sınırlar 256 düğüme ve 8192 kenara kadardır.

  • -71 bayt: kenarları ve sıfır sayfa kullanımını kontrol etmek için optimize edilmiş yordam

Daha iyi özelliklere sahip daha büyük ( 883 805 bayt) bir sürüm var:

  • hesaplama sırasında görsel geribildirim (düğümlerin her permütasyonu sınır rengini değiştirir)
  • Kenarları, yer tasarrufu sağlamak için ROM'lar tarafından "gizli" olan RAM'de saklamak için banka değiştirme özelliğini kullanır
  • bulunan maksimum klikanın boyutunu ve düğümlerini çıkarır

Çevrimiçi demo

Kaynağa göz at


(*) Son test davası 12 ila 20 saat arasında bir zaman alıyor (nihayet bitince uyuyordum). Diğer test vakaları birkaç dakika içinde en kötü ihtimalle bitiyor.

Son test durumunun ekran görüntüsü

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.