Konu: Multi Mod
Tekil Mesaj gösterimi
  #4  
Alt 02 Kasım 2013, 19:26
Avatar Yok
L4roXyL L4roXyL isimli Üye şimdilik offline konumundadır
 DirtyCoder 

mS Puan: 1031
mS Derece: L4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisiL4roXyL Kod delisi
 
Üyelik tarihi: 10 Temmuz 2009
Yaş: 32
Mesajlar: 339
Konular: 100
Eklentiler: 3
Alınan Teşekkür: 40
Yapılan Teşekkür: 0
Standart

Cocorico ben geç kaldım sanırım bu challenge'a
Yine de;

Sanırım burada yapılmak istenen şey verilen modları tekrar change etmek.
Yani şöyle ki; +vho-oq+ah-o modları, +v+h+o-o-q+a+h-o şeklinde olmalı. Zaten ondan sonrası basit bir döngüye bakar.

İlgili text-imizi şu şekilde düşünelim(malum yazdığım kod o kısım için geçerli, zaten önemli olan kısım orası gerisi basit);

Kod:
#mS +o-o+vhh+q Toprak CoCoRiCo uFuK CesuryureK Difuzyon Feragat
İlk öncelikle buradaki modları modifiye(yukarıda gösterdim) etmek için regex-de kullanılabilir, normal bir external bir döngüde kullanılabilir. Ben regex kullanmayı tercih ettim. Şöyleki;

Regex dilimi: $regsubex(<modes>,/([+-])(\w+)/g,$regsubex(\2,/(.)/g, [[ \1\ $+ t ]] ))
Örnek: //echo -: $regsubex(a,+o-o+vhh+q,/([+-])(\w+)/g,$regsubex(\2,/(.)/g, [[ \1\ $+ t ]] ))
Sonuç: +o-o+v+h+h+q

Bundan sonrası zaten basit bir döngüye bakar. Esasında gerisi de komple regex içerisinde yazılabilir, lakin uğraşacak gibi değilim şuan .)
Neyse kodun tamamını verelim.

Kod:
alias m+ {
  tokenize 32 $1-
  if $1 = <- && $3 = mode {
    var %s = $regsubex(a,$5,/([+-])(\w+)/g,$regsubex(\2,/(.)/g, [[ \1\ $+ t ]] ))
    noop $regsubex(%s,/([+-][ahovq])/g,)
    while - {
      inc -u %.
      echo -s $4 $regsubex(c,$$regml(%.),/([-+])([ahvoq])/g,$iif(\1 = -,,$&
        $iif(\1 = +,$replace(\2,v,+,h,%,o,@,a,&,q,~)))) $+ $token($6-,%.,32)
    }
  }
}
/debug -i on m+

Yapmanız yeterli olur.
__________________
C/co/cod/code^man.
Alıntı ile Cevapla
 
1 2 13 14 16 17 18 19 21 22 23 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 49 50 51 52 54 55 56 57 58 59 60 61 62 63 67 68 69 70 71 72 73 74 75 76