Çift bağlantılı verileri ayırma


12

Çift bağlantılı bir liste, her bir düğümün valuehem listede hem de previoussonrakine "bağlantıları" olduğu bir veri yapısıdır nodes. Örneğin, 12, 99 ve 37 değerlerine sahip aşağıdaki düğümleri göz önünde bulundurun:

Burada, 12 ve 99next değerlerine sahip düğümler, 99 ve 37 değerleriyle ilgili düğümlerine işaret eder . 37 değerine sahip düğümde nextişaretçi yoktur, çünkü listedeki son düğümdür. Benzer şekilde, 99 ve 37 değerlerine sahip düğümlerin ilgili previousdüğümlerine ( 12 ve 99) işaret eder , ancak 12'de hiçbir previousişaretçi yoktur, çünkü listedeki ilk düğümdür.

Kurulum

Uygulamada, bir düğümün "bağlantıları" önceki ve sonraki düğümün bellekteki konumlarına işaretçi olarak uygulanır. Bizim amacımız için, "bellek" bir düğüm dizisi olacak ve bir düğümün konumu dizideki dizini olacaktır. Bir düğüm, formun 3 parçası olarak düşünülebilir ( prev value next ). Yukarıdaki örnek, aşağıdaki gibi görünebilir:

Ancak bunun yerine şöyle görünebilir:

Herhangi bir düğümden başlayarak, previousondan önce gelen düğümlere ulaşmak için bağlantıları (kırmızı okların kökenleri olarak gösterilir) ve nexttüm düğümlerin değerlerini sırayla almak için sonraki düğümleri bulmak için bağlantıları (yeşil oklar) takip edebilirsiniz: [12, 99, 37].

Yukarıdaki ilk diyagram bir dizide olarak gösterilebilir [[null, 12, 1], [0, 99, 2], [1, 37, null]]. O zaman ikincisi olurdu [[2, 99, 1], [0, 37, null], [null, 12, 0]].

Meydan okuma

Bir düğüm dizisini ve bir düğümün dizinini girdi olarak alan ve aynı çift bağlantılı bağlantıdaki düğümlerin değerlerini döndüren bir program yazın.

Bir komplikasyon

"Bellek" her zaman sadece bir listenin düğümlerini içermez. Birkaç liste içerebilir:

Yukarıdaki dizi, size kolaylık sağlamak için renkle kodlanmış üç çift bağlantılı liste içerir:

  1. Endeksler de düğümleri 7, 10, 1, 4, 3, 12(sadece gösteren nextkarışıklığı azaltmak için bağlantılar; büyütmek için tıklayın):

    Bu dizi ve bu dizinlerden herhangi biri göz önüne alındığında, programınız değerleri sırayla döndürmelidir [0, 1, 1, 2, 3, 5, 8].

  2. Dizindeki düğüm 9:

    Dizin verildiğinde, 9programınız geri dönmelidir [99].

  3. Dizinler düğümleri 11, 8, 0, 6, 2:

    Bu dizinlerden biri göz önüne alındığında, geri dönmelidir [2, 3, 5, 7, 11].

kurallar

Giriş

Programınız girdi olarak alacaktır:

  1. 1 ≤ 𝒏 ≤ 1,000, herhangi bir uygun biçimde, örneğin bir dizi dizisi, 3𝒏 uzunluğunda "düz" bir tamsayı dizisi vb.

    : 3-küpe elemanlar herhangi bir sırayla olabilir ( prev value next ), ( next prev value )her bir düğüm için, vb prevve nextolacak null(veya başka bir elverişli bir değer, örneğin -1), bir çift bağlı bir listede ilk veya son düğümü veya bir geçerli endeksını belirten listesi, uygun olarak 0- veya 1 tabanlı. valueimzalı bir 32 bit tam sayı veya dilinizin desteklediği en büyük tam sayı türü (hangisi daha küçükse) olacaktır.

  2. Listedeki bir düğümün indeksi 𝒑 (1). Belirtilen düğüm, çift bağlantılı bir listedeki ilk düğüm, son düğüm, bir orta düğüm veya hatta tek düğüm olabilir.

Giriş listesi (1) patolojik veriler içerebilir (örn. Döngüler, diğer birçok düğümle gösterilen düğümler, vb.), Ancak giriş endeksi (2) her zaman tek bir iyi biçimlendirilmiş çıktının olabileceği bir düğüme işaret edecektir. çıkarılabilir.

Çıktı

Programınız, 𝒑 dizinindeki düğümün üye olduğu çift bağlantılı bağlantı listesindeki düğümlerin değerlerini liste sırasıyla çıkarmalıdır. Çıktı herhangi bir uygun biçimde olabilir, ancak verileri yalnızca düğümleri içermelidir value.

Kazanan

Bu . Bayt cinsinden en kısa cevap kazanır. Standart boşluklar geçerlidir.

Test senaryoları

Aşağıda, her test durumu aşağıdaki şekildedir:

X)
prev value next, prev value next, ...
index
value value value ...

... burada Xtest senaryosunu tanımlayan bir harf, ikinci satır giriş listesidir, üçüncü satır 0 tabanlı giriş endeksidir ve dördüncü satır çıktıdır.

A) null 12 1, 0 99 2, 1 37 null
   1
   12 99 37

B) 2 99 1, 0 37 null, null 12 0
   1
   12 99 37

C) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
   4
   0 1 1 2 3 5 8

D) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
   0
   2 3 5 7 11

E) 8 5 6, 10 1 4, 6 11 null, 4 3 12, 1 2 3, 12 8 null, 0 7 2, null 0 10, 11 3 0, null 99 null, 7 1 1, null 2 8, 3 5 5
   9
   99

F) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   18
   80 80 67 71

G) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   8
   1 -1 1 -1 1 -1 1

H) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   4
   1 3 6 10 15 21

I) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   14
   3 1 4 1 5 9 2 6 5 3

J) 13 80 18, 18 71 null, 5 10 19, 12 1 8, 19 21 null, 31 6 2, 17 5 26, 26 0 30, 3 -1 25, null 1 23, 27 6 17, 14 1 24, 28 -1 3, null 80 0, 20 4 11, 33 6 29, 24 9 33, 10 7 6, 0 67 1, 2 15 4, 32 1 14, null 1 31, 29 3 null, 9 -1 28, 11 5 16, 8 1 null, 6 3 7, null 8 10, 23 1 12, 15 5 22, 7 9 null, 21 3 5, null 3 20, 16 2 15
   17
   8 6 7 5 3 0 9

K) 4 11 0, null 22 3, null 33 3, 1 44 4, 3 55 null, 7 66 7, 6 77 6
   3
   22 44 55

L) null -123 null
   0
   -123



Üç diziye (biri sıradaki tüm önceki düğümleri, bir değeri ve bir ardıl düğümü içerir) girilmesine izin veriliyor mu yoksa bu tuples kavramından çok mu uzakta?
18'de Sanchises

@Sanchises Üzgünüm, benim için çok uzak.
Ürdün

Her şey yolunda! Ben de öyle düşünmüştüm, ama ayrı diziler alarak iki baytı tıraş edebileceğimi söyleyerek cevabımdaki yorumların önünde olmak istedim.
18'de Sanchises

Yanıtlar:


1

05AB1E , 25 bayt

è[¬D0‹#Isè]\[`sˆD0‹#Isè]¯

Çevrimiçi deneyin!

açıklama

è[¬D0‹#Isè]\[`sˆD0‹#Isè]¯   # Arguments n, a
è                           # Get element at index n in a
 [¬D0‹#Isè]                 # Find the first element in the list
 [                          # While true, do
  ¬                         #   Head (get index of previous element)
   D0‹#                     #   Break if lower than 0
       Isè                  #   Get the element at that index
          ]                 # End loop
           \                # Delete top element of stack
            [`sˆD0‹#Isè]    # Iterate through list
            [               # While true, do
             `sˆ            #   Add value to global array and keep next index on stack
                D0‹#Isè     #   Same as above
                       ]    # End loop
                        ¯   # Push global array

3

Haskell , 79 65 59 55 bayt

Brute Force sayesinde -6 bayt .

x#i|let-1!d=[];i!d=i:x!!i!!d!d=[x!!i!!1|i<-last(i!0)!2]

Olarak temsil edilen #tamsayıların bir listesini kabul eden işlevi tanımlar ve düğüm değerlerinin listesini döndürür.null-1

Çevrimiçi deneyin!

açıklama

let-1!d=[];i!d=i:x!!i!!d!d

!Düğümden başlayarak düğümler arasında yinelenen ive ziyaret edilen dizinlerin listesini döndüren işlevi tanımlayın . d"Tuple" ın hangi dizininin bir sonraki düğümün dizini olarak kullanıldığını belirten ikinci argümanı kabul eder ( d==2ileriye doğru d==0yineleme, geriye doğru yineleme).

(i!0)

Verilen dizinden başlayarak geriye doğru yineleyin ve ziyaret edilen dizinleri döndürün.

last(i!0)

Listenin başlangıcı olan son ziyaret edilen dizini al.

last(i!0)!2

Listenin başından itibaren yineleyin.

[x!!i!!1|i<-last(i!0)!2]

Ziyaret edilen her bir dizini düğümün değeriyle değiştirin.


Sen olabilir neredeyse yazma x!!i!!1olarak i!1!!1, ama bunun nedeni arasında kırar -1çıkışlarda. Sadece temsil etmek için başka bir sentinel değeri seçerseniz null(örneğin -9), işe yarayacaktır, ancak her zaman bazı can sıkıcı olan bazı girdiler için kırılacaktır .
Lynn

3

Python 2 , 60 bayt

l,n=input()
while~n:m=n;n=l[n][0]
while~m:p,v,m=l[m];print v

Çevrimiçi deneyin!

Chas Brown'un cevabı şu, bu golfler hariç:

  • N'yi yeniden kullanıyorum, ödevi kaydediyorum
  • En son geçerli n değerini m cinsinden saklarım.
  • 3. satırdaki atamadan sonra baskıyı yerleştirin, son baskıyı kaydedin
  • - ~ n yerine sadece ~ n kullanıyorum, çünkü negatif değerler pozitif değerler kadar doğrudur ve bana 2 karakter kazandırıyor.


2

MATL , 39 bayt

XHx`HwI3$)t]x6Mt`Hwl3$)tbhwt]x4L)Hw2I$)

Çevrimiçi deneyin!

Oktav cevabımın neredeyse doğrudan bir portu, ancak bu sürüm ilk önce sonu buluyor ve daha sonra bir bayt tasarruf eden diğer yoldan ziyade geri çalışıyor.

XHx           % Store array in H.
`HwI3$)t]     % Work to the end of the array
x6Mt          % Delete the end of array delimiter, and push the array end index twice
`Hwl3$)    t] % Work to the beginning of the array
       tbhw   % Append all indices found.
Hw2I$)        % Index into original array.

1

PHP, 132 bayt

<?list(,$x,$y)=$argv;parse_str($x);while(($q=$x[$y*3+1])>=0)$y=$q;do{$n[]=$x[$y*3+2];$y=$x[$y*3];}while($x[$y*3]);echo join(' ',$n);

Çevrimiçi deneyin!

Girdi bir sorgu dizesi olarak alınır x[]=-1&x[]=1&x[]=1...sırasına göre, (düz dizideki tüm düğümler) next, prevdaha sonra valuedüğümler sona erdirmek için kullanılan -1 her bir düğüm için.


1

Python 2 , 81 77 bayt

a,n=input()
u=a[n][0]
while-~u:u,v,w=a[u]
while-~w:print v;u,v,w=a[w]
print v

Çevrimiçi deneyin!

DÜZENLEME: Bay Xcoder'a 4 bayt için teşekkürler ...

Bağlı liste segmentinin başlangıcını / sonunu temsil etmek için u ve w'nin -1 olduğu tuples [u, v, w] listesini alır.


77 bytes Çevrimiçi deneyin! . 0Boolean'lar int'in alt sınıflarıdır, bu yüzden sadece Falsy'dir ve bu nedenle u>=0golf oynamak u+1mümkündür ve bu -~uboşlukları kaldırmak için daha da kısaltılabilir .
Bay Xcoder

@Bay. Xcoder - Evet, oldukça doğru!
Chas Brown

1

Oktav , 81 78 76 bayt

function o=f(a,n)while q=a(n,1)o=a(n=q,2);end
while n=a(n,3)o=[o a(n,2)];end

Çevrimiçi deneyin!

Oldukça basit bir versiyon. Açıklama okuyucuya bir alıştırma olarak bırakılmıştır. Çok daha eğlenceli bir sürüm aşağıda sunulmuştur:

Oktav , 142 99 92 bayt

@(a,n)[(p=@(b,c,z){q=a(z,2),@()[b(b,c,a(z,c)),q]}{2-~a(z,c)}())(p,1,n),p(p,3,n)(end-1:-1:1)]

Çevrimiçi deneyin!

Anonim işlevleri sevdiğini duydum ...

nx3İlk sütunu selefi, ikinci sütunu değeri ve üçüncü değeri ardıl düğümleri olan bir dizi alır. Tüm düğüm indeksleri 1 tabanlı olup Octave'da varsayılan değerdir.

% Create an anonymous function, taking an array a and first node n
@(a,n)
% Returns an array containing the predecessor and sucessor nodes
      [                                                                     ,                     ]
% Defines an recursive anonymous function (by supplying itself to the local namespace)
% which looks at the first column (c=1) or last column (c=3) of the input array to get the next nodes
       (p=@(p,c,z)                                                   )(p,1,n)
% Create a cell array, either containing the end node,
                    {q=a(z,2),                       
% ...or an array with all next  next nodes and the current node
% (note the use of an anonymous function taking no parameters to defer array access, in case of the last node)                
                              @()[p(p,c,a(z,c)),q]}
% depending whether the next node number is nonzero (followed by () to execute the deferred array access)
                                                    {2-~a(z,c)}()
% Do the same with c=3, reverse (function p builds the array right-to-left) and drop the current node to prevent a duplicate.                                                                             
                                                                             p(p,3,n)(end-1:-1:1)

1

Kotlin , 85 bayt

{g,S->generateSequence(generateSequence(S){g[it][0]}.last()){g[it][2]}.map{g[it][1]}}

Beautified

{g,S->
    generateSequence(generateSequence(S){g[it][0]}.last()){ g[it][2]}.map { g[it][1] }
}

Ölçek

typealias Node=Triple<Int?,Int?,Int?>
data class Test(val input: List<Node>, val start:Int, val result: List<Int>)
val TEST = listOf<Test>(
Test(
listOf(Node(null, 12, 1), Node(0, 99, 2), Node(1, 37, null)),
1,
listOf(12, 99, 37)
),
Test(listOf(
Node(2, 99, 1), Node(0, 37, null), Node(null, 12, 0)),
1,
listOf(12, 99, 37)
),
Test(
listOf(Node(8, 5, 6), Node(10, 1, 4), Node(6, 11, null), Node(4, 3, 12), Node(1, 2, 3), Node(12, 8, null), Node(0, 7, 2), Node(null, 0, 10), Node(11, 3, 0), Node(null, 99, null), Node(7, 1, 1), Node(null, 2, 8), Node(3, 5, 5)),
4,
listOf(0, 1, 1, 2, 3, 5, 8)
),
Test(
listOf(Node(8, 5, 6), Node(10, 1, 4), Node(6, 11, null), Node(4, 3, 12), Node(1, 2, 3), Node(12, 8, null), Node(0, 7, 2), Node(null, 0, 10), Node(11, 3, 0), Node(null, 99, null), Node(7, 1, 1), Node(null, 2, 8), Node(3, 5, 5)),
0,
listOf(2, 3, 5, 7, 11)
),
Test(
listOf(Node(8, 5, 6), Node(10, 1, 4), Node(6, 11, null), Node(4, 3, 12), Node(1, 2, 3), Node(12, 8, null), Node(0, 7, 2), Node(null, 0, 10), Node(11, 3, 0), Node(null, 99, null), Node(7, 1, 1), Node(null, 2, 8), Node(3, 5, 5)),
9,
listOf(99)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
18,
listOf(80, 80, 67, 71)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
8,
listOf(1, -1, 1, -1, 1, -1, 1)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
4,
listOf(1, 3, 6, 10, 15, 21)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
14,
listOf(3, 1, 4, 1, 5, 9, 2, 6, 5, 3)
),
Test(
listOf(Node(13, 80, 18), Node(18, 71, null), Node(5, 10, 19), Node(12, 1, 8), Node(19, 21, null), Node(31, 6, 2), Node(17, 5, 26), Node(26, 0, 30), Node(3, -1, 25), Node(null, 1, 23), Node(27, 6, 17), Node(14, 1, 24), Node(28, -1, 3), Node(null, 80, 0), Node(20, 4, 11), Node(33, 6, 29), Node(24, 9, 33), Node(10, 7, 6), Node(0, 67, 1), Node(2, 15, 4), Node(32, 1, 14), Node(null, 1, 31), Node(29, 3, null), Node(9, -1, 28), Node(11, 5, 16), Node(8, 1, null), Node(6, 3, 7), Node(null, 8, 10), Node(23, 1, 12), Node(15, 5, 22), Node(7, 9, null), Node(21, 3, 5), Node(null, 3, 20), Node(16, 2, 15)),
17,
listOf(8, 6, 7, 5, 3, 0, 9)
),
Test(
listOf(Node(4, 11, 0), Node(null, 22, 3), Node(null, 33, 3), Node(1, 44, 4), Node(3, 55, null), Node(7, 66, 7), Node(6, 77, 6)),
3,
listOf(22, 44, 55)
),
Test(
listOf(Node(null, -123, null)),
0,
listOf(-123)
)
)

var f:(List<List<Int?>>,Int)-> Sequence<Int?> =
{g,S->generateSequence(generateSequence(S){g[it][0]}.last()){g[it][2]}.map{g[it][1]}}

fun main(args: Array<String>) {
    for ((input, start, result) in TEST) {
        val out = f(input.map { it.toList() }, start).toList()
        if (out != result) {
            throw AssertionError("$input $start $result $out")
        }
    }
}

TIO

TryItOnline


Keşke sadece dilek daha kısa olsaydı
jrtapsell

0

JavaScript ES6, 70 63 Bayt

(x,i,a)=>(h=_=>i&&h(a(x[i].v),i=x[i].n))(x.map(_=>i=x[i].p||i))

Test durumu:

F([undefined,{p:0,v:12,n:2},{p:1,v:99,n:3},{p:2,v:37,n:0}],1,alert)

alertİhtiyaçlarınızın fonksiyonunun ana gövdesinde olmak ve bayt toplam sayılmak için.
Shaggy


+10 / -9 bir fikir birliği değildir.
Shaggy

Tam olarak + ve - leri göremiyorum. Ayrıca, javascript'in amaçlanan çıktı yolu ve çıktı biraz geciktiğinde tek yol
l4m2
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.