Bitişik Harf Testi


12

Şifre gücü testinin bir yönü, klavyedeki bitişik harflerin çalışmasıdır. Bu sınamada, bir truedize bitişik harflerden oluşan bir çalışma içeriyorsa geri dönen bir program oluşturulmalıdır .

Bitişik harflerden oluşan bir sayı nedir?

Şifre gücü test cihazının bu basitleştirilmiş versiyonu için, bitişik karakterlerden oluşan bir çalışma, QWERTY klavyede tek bir yönde (sol, sağ, yukarıda veya aşağıda) 3 veya daha fazla harften oluşur. Bu zorluğun amacı için klavyenin düzeni şöyle görünür:

1234567890
QWERTYUIOP
ASDFGHJKL
ZXCVBNM

Yukarıdaki şemada aşağıdadır , ancak Qaşağıda 1değildir 2, bu nedenle içinde 1qaveya aq1içinde herhangi bir yerde bulunan bir dize , programın geri dönmesini sağlar true, ancak 2qaolmaz.

Giriş

Kontrol edilecek şifre dizesi. Yalnızca karakterleri [0-9a-z]veya [0-9A-Z](seçiminizi) içerir.

Çıktı

Parola bir veya daha fazla bitişik anahtar çalıştırması içeriyorsa programın doğruluk değeri veya hiçbiri içermiyorsa falsey döndürmesi gerekir.

Örnekler

Aşağıdaki girişler true değerini vermelidir:

  • asd
  • ytrewq
  • ju7
  • abc6yhdef

Ve bu girdiler yanlış çıktı vermelidir:

  • abc
  • aaa
  • qewretry
  • zse
  • qwdfbn
  • pas

kurallar

  • Cevaplar tam programlar veya fonksiyonlar olabilir.
  • Standart boşluklara izin verilmez.
  • Bu , en düşük puan (bayt cinsinden) kazanır!

Yanıtlar:


3

Pyth - 66 62 60 bayt

Oldukça basit bir yaklaşım. Len 3 alt dizelerinden herhangi birinin klavyenin dönüşlerinden herhangi birinde olup olmadığını kontrol eder. Klavye için temel kodlamayı kullanacak.

.E}Rjb+J+Kc+jkS9"0
qwertyuiop
asdfghjkl
zxcvbnm"b.tKN_MJ.:z3

Test Takımı .


@ user81655 düzeltildi ve iki bayt kaydedildi.
15:58, Maltysen

2

Japt , 78 bayt

Japt kısaltılmış versiyonudur Ja vaScri nk . yorumlayıcı

V=1oA ¬+`0\nqØÆyuiop\n?dfghjkl \nzxcvbnm`;1+¡Y©(((VbX -VbUgY-1)-5 a -5 %A a)bB

0Falsey vakaları için çıktılar ; aksi takdirde, pozitif bir tam sayı. Bu ?, yazdırılamaz Unicode char U + 0086 ile değiştirilmelidir veya tüm bu sorunlara gitmek istemiyorsanız, sadece as.

Nasıl çalışır

V=1oA q +"0\nqwertyuiop\nasdfghjkl \nzxcvbnm";1+Um@Y&&(((VbX -VbUgY-1)-5 a -5 %A a)bB
           // Implicit: U = input string
V=1oA q    // Set variable V to the digits 1-9, plus
+"...";    // this string.
Um@        // Take U and map each character X and its index Y with this function:
Y&&        //  If Y is 0, return Y; otherwise,
VbX -      //  take the index of X in V, subtract
VbUgY-1    //  the index of (char at position Y - 1 in U) in V,
-5 a -5    //  subtract 5, take the absolute value, subtract 5 again,
%A a       //  take modulo by 10, then take the absolute value.
           //  This returns 1 for any pair of characters that is adjacent
           //  within V, horizontally or vertically.
bB +1      // Take the index of 11 in the result and add one.
           // Implicit: output last expression

2

C #, 227

int h(string k){var q="1234567890,QWERTYUIOP,ASDFGHJKL,ZXCVBNM,1QAZ,2WSX,3EDC,4RFV,5TGB,6YHN,7UJM,8IK,9OL,";int i=0,j=0;for(;i<k.Length-2;i++)if((q+String.Concat(Enumerable.Reverse(q))).Contains(k.Substring(i,3)))j=1;return j;}

0 falsey, 1 doğrudur. Tüm anahtarları yatay ve dikey olarak birleştirin ve ters çevirin ve içinde 3 karakterden herhangi birinin bulunup bulunmadığını kontrol edin.

C # gerçekten ayrıntılı, diğer dillere dalmak zorunda :(


0

PHP, 173 + 1 bayt

while(~$argn[$i+2])($p=preg_match)($r=_.join(".{10}",str_split(($t=substr($argn,$i++,3))))."|$t"._,$d=_1234567890_qwertyuiop_asdfghjkl__zxcvbnm)||$p($r,strrev($d))?die(1):0;

-nRKüçük harf girişli boru olarak çalıştırın veya çevrimiçi deneyin .


0

Clojure, 156 bayt

#(some(set(for[R[["1234567890""QWERTYUIOP""ASDFGHJKL.""ZXCVBNM..."]]R[R(apply map list R)]r R p(partition 3 1 r)p((juxt seq reverse)p)]p))(partition 3 1 %))

Bu uygulanması oldukça ilginç bir işti.

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.