รหัสผ่านเป็นสตริง


31

ความท้าทายของคุณคือรหัสผ่านสตริง! รหัสผ่านคืออะไรคุณถาม?

ใช้สตริงเป็นอินพุต สายนี้จะประกอบด้วยตัวอักษรตัวพิมพ์ใหญ่ตัวอักษรตัวพิมพ์เล็กตัวเลขและช่องว่าง

คุณต้องแทนที่ช่องว่างทั้งหมดด้วยขีดล่างและย้ายตัวเลขทั้งหมดไปยังจุดสิ้นสุดของสตริงตามลำดับที่ปรากฏจากซ้ายไปขวา จากนั้นสำหรับตัวอักษรทุกตัวในสตริงสุ่มเปลี่ยนเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก

ตัวอย่าง (กรณีของตัวละครควรแตกต่างกันทุกครั้ง):

Input
Hello world
Output
HElLo_wORld

Input
pa55 w0rd
Output
pA_Wrd550

Input
14 35
Output
_1435

Input
0971
Output
0971

Input
[space]
Output
_

รหัสที่สั้นที่สุดเป็นไบต์ชนะ!

ใครก็ตามที่ถามเกี่ยวกับความปลอดภัยของข้อมูล SE หากนี่เป็นอัลกอริทึมการแปลงแป้นพิมพ์ที่ดีจะชนะ! - ไม่ต้องกังวลกับผู้ซ้อนทางทิศตะวันออกฉันล้อเล่น


47
ยิ่งใหญ่ ตอนนี้คุณได้เผยแพร่รูปแบบของฉันแล้ว มีสิทธิ์กลับเปลี่ยนรหัสผ่านของฉันทั้งหมด ...
Geobits

8
มันไม่ได้เป็นอัลกอริธึมการแฮ็กด้วยรหัสผ่าน ... มันจะถูกฆ่าด้วยไฟบน Security SE XD
Justin

1
ถ้าเพียง แต่มีวิธีง่ายๆในการทำแบบแผนในจอประสาทตา ...
mbomb007

4
นี่ไม่ใช่อัลกอริทึม hashing ที่ดีเนื่องจากมีการสุ่ม
CalculatorFeline

6
ฉันถูกล่อลวงให้ใช้คำตอบบางอย่างเป็นรหัสผ่าน
MickyT

คำตอบ:


12

Pyth, 15 ไบต์

s}D`MTrRO2Xzd\_

สาธิต

s}D`MTrRO2Xzd\_
                   Implicit: z = input(), d = ' '
          Xzd\_    In z, replace ' ' with '_'.
      rR           To each character, apply r-function
        O2         Randomly 0 or 1. r 0 is lowercase, r 1 is uppercase.
 }D                Order the characters based on presence in
   `MT             The strings of the numbers 0 to 9.
s                  Concatenate into a string.

27

เขาวงกต 76 ไบต์

 `:_64/"32}
,`    (3  :=-{
"`{"; _v2$  ;`3
"`".:@ ; ".5(`3.
<       "" `^`;>

อีกความร่วมมือกับ @ MartinBüttnerและอีกด้านหนึ่งของสเปกตรัมเขาวงกต - เป็นครั้งแรกที่เรามีโปรแกรมทั้งสี่รายการ^>v<ในโปรแกรมเดียว ลองออนไลน์!

คำอธิบาย

อัลกอริทึมทั่วไปซึ่งทำงานในลูปเป็นดังนี้:

 1.   Read a char
 2.   If EOF:
 3.     Move all digits from auxiliary stack to main
 4.     Output all digits on main stack
 5.     Halt
      Otherwise:
 6.     If char is a letter (c >= 64):
 7.       If random turns left:
 8.         Output char XOR 32
          Otherwise:
 9.         Output char
        Otherwise:
10.       Shift char to auxiliary stack
11.       If char is space (c-32 == 0):
12.         Pull char back from auxiliary stack
13.         Output underscore
          Otherwise:
14.         Continue loop

เพื่อให้คำอธิบายมีขนาดเล็กลงนี่คือคร่าวๆว่าแต่ละส่วนของโปรแกรมตรงกับรหัสเทียมข้างต้น:

ป้อนคำอธิบายรูปภาพที่นี่

นี่คือส่วนที่น่าสนใจ

รับการสุ่มในเขาวงกต

มีทางเดียวเท่านั้นที่จะได้รับการสุ่มใน Labyrinth และเมื่อ IP พยายามที่จะส่งต่อ แต่ 1) ไม่มีเส้นทางไปข้างหน้าหรือข้างหลังและ 2) มีเส้นทางที่ใช้ได้ทั้งซ้ายและขวา ในกรณีนี้ IP สุ่มเลือกระหว่างเส้นทางซ้ายและขวา

สามารถทำได้โดยใช้^>v<โอเปอเรเตอร์ที่ปรากฏขึ้นnและเลื่อนแถว / คอลัมน์nออกไปทีละ 1 ตัวอย่างเช่นโปรแกรม ( ลองออนไลน์! )

" 1
""v!@
  2
   !@

แสดงผล 1 หรือ 2 แบบสุ่มเนื่องจากvเลื่อนคอลัมน์ด้วย offset 0 (นั่นคือคอลัมน์ที่ IP เปิด) โดย 1 ให้ผล

"
""1!@
  v
  2!@

IP หันไปทางขวาแล้วพยายามส่งต่อ (ด้านบนของสแต็กเป็นศูนย์) แต่ไม่สามารถทำได้ มันไม่สามารถเคลื่อนที่ไปข้างหลังได้ดังนั้นจึงสุ่มเลือกระหว่างซ้ายหรือขวา

ลูกกอล์ฟ

  • โปรแกรมเริ่มต้นจากอักขระตัวแรกในลำดับการอ่านซึ่งคุณจะสังเกตเห็นว่าเป็นจริงขั้นตอนที่ 6 อย่างไรก็ตามการ popping จาก Labyrinth stack ที่ว่างเปล่าให้ผลเป็น 0 ดังนั้นขั้นตอนที่ 10 และ 14 จะเกิดขึ้นขยับศูนย์ไปที่สแต็คเสริม ไม่มี op

  • สแต็กหลักว่างเปล่าอย่างมีประสิทธิภาพหลังจากการวนซ้ำทุกครั้งซึ่งทำให้เราสามารถเลย์เอาต์รหัสโดยใช้>และ<บนเลขศูนย์ที่ด้านล่าง การ>ตัดแถวด้านล่างรอบเพื่อให้ IP ย้ายจากด้านล่างขวาไปซ้ายล่างและ<เลื่อนแถวกลับมา จากนั้น IP จะเลื่อนขึ้นคอลัมน์ด้านซ้ายอย่างมีความสุขเพื่อวนซ้ำต่อไป

  • ตัวเลขในเขาวงกตป๊อปและผลักดันn 10*n + <digit>นอกจากนี้ตัวอักษรจะถูกนำ modulo 256 ก่อนที่จะถูกส่งออก ใส่ทั้งสองเข้าด้วยกันจะช่วยให้เราเอาท์พุท 95 (ใต้) ด้วยการทำ`3332 (เว้นวรรค) -3233 % 256 = 95ซึ่งทำงานเพราะ แม้ว่าจะมีวิธีอื่นในการเปลี่ยน 32 เป็น 95 ( ;95เป็นวิธีที่ง่ายที่สุด) การทำงานกับจำนวนลบที่นี่ช่วยให้เราสามารถบีบอัดโค้ดได้เล็กน้อยด้วยการเลี้ยวซ้าย


2
ผู้โจมตีทุกคนที่พยายามใช้อัลกอริทึมนี้เพื่อค้นหารหัสผ่านของฉันแน่ใจว่าหลงทาง ...
J_F_B_M

3
ฉันจะใช้โปรแกรมนี้เป็นรหัสผ่านของฉัน
ILikeTacos

8

05AB1E , 22 21 20 ไบต์

รหัส:

þ¹žh-s«ð'_:vyždÈiš}?

ใช้การเข้ารหัสCP-1252

ลองออนไลน์!


2
รหัส 05AB1E ดูเหมือนว่าเป็นภาษาอังกฤษเก่า :-)
Luis Mendo



7

CJam, 23 ไบต์

lS'_er{60<}${eu_el+mR}%

ทดสอบที่นี่

คำอธิบาย

l       e# Read input.
S'_er   e# Turn spaces into underscores.
{60<}$  e# Sort (stably) by whether the character is a digit or not. This moves digits
        e# to the end, without changing the relative order within digits or non-digits.
{       e# Map this block over the characters...
  eu    e#   Convert to upper case.
  _el   e#   Make a copy and convert to lower case.
  +     e#   Join them into one string.
  mR    e#   Randomly choose one of the characters. Of course, this entire block is a
        e#   no-op for non-letter characters.
}%

7

Python ขนาด 107 ไบต์

from random import*
lambda s:''.join([choice(c+c.swapcase()),'_'][c<'!']for c in sorted(s,key=str.isdigit))

การปรับปรุงคำตอบอีก สองข้อใน Python เนื่องจาก:

  • [...,'_'][c<'!']ถูกใช้แทนs.replace(' ','_')และ
  • choice(c+c.swapcase()) ถูกใช้แทน choice([c.upper(),c.lower()])

โอ้การปรับปรุงที่ดี คำตอบที่ดี! +1 จากฉัน
DJMcMayhem

7

JavaScript (ES6), 114 101 ไบต์

s=>s.replace(/./g,c=>c>'9'?c[`to${Math.random()<.5?"Low":"Upp"}erCase`]():c>' '?(s+=c,''):'_',s='')+s

47 ไบต์เพียงเพื่อสุ่มกรณีของตัวละคร ...

แก้ไข: บันทึกขนาดใหญ่ 13 ไบต์ด้วย @ edc65


ฉันไปงานปาร์ตี้สายอีกครั้ง ต่ำ / upp ดีมาก! แต่ส่วนที่เหลือสามารถจะง่าย:f=s=>s.replace(/./g,x=>x>'9'?x[`to${Math.random()<.5?"Low":"Upp"}erCase`]():x>' '?(s+=x,''):'_',s='')+s
edc65

@ edc65 ว้าว แม้เพียงแค่การรวมพื้นที่ / ขีดล่างเข้ากับการเปลี่ยนตัวพิมพ์ใหญ่ / เล็กช่วยประหยัดสองไบต์ แต่นี่ยอดเยี่ยมมาก!
Neil

7

MATL , 27 ไบต์

k32'_'XEt58<2$S"@rEk?Xk]]v!

ลองออนไลน์!

k         % implicit input. Make lowercase. Non-lettters are not affected
32'_'XE   % replace spaces by underscores
t58<      % duplicate. Create logical index: true for digits, false otherwise
2$S       % sort first string according to second. Sort is stable
"         % for each character in that string
  @       %   push that character
  rEk     %   generate 0 or 1 with 1/2 probability each
  ?       %   if it's a 1
    Xk    %     make uppercase. Non-letters are not affected
  ]       %   end if
]         % end for each
v         % vertically concatenate all stack contents
!         % transpose into a row char array, i.e. a string. Implicit display

5

Python 3, 128 122 118 ตัวอักษร

from random import*
s=lambda x:''.join(choice(i.upper()+i.lower())for i in sorted(x.replace(' ','_'),key=str.isdigit))

ขอบคุณ xnor สำหรับการโกนหนวด 6 ไบต์


ดูเหมือนจะสั้นกว่าเพื่อให้ได้ตัวเลขในตอนท้ายโดยการเรียงลำดับ:lambda x:''.join(choice([i.upper(),i.lower()])for i in sorted(x.replace(' ','_'),key=str.isnumeric))
xnor

@xnor ขอบคุณ! ฉันควรเรียนรู้และเริ่มใช้ lambdas จริงๆ ...
DJMcMayhem

5

Perl 6, 77 75 61 ไบต์

{[~] |S:g/' '/_/.comb(/\D/)».&{(.lc,.uc).pick},|.comb(/\d/)}

S///เป็นเหมือนs///ยกเว้นว่ามันจะไม่ได้ปรับเปลี่ยน$_ในสถานที่


4

Pyth, 17 ไบต์

smrdO2o}N`UT:zd\_

ลองที่นี่!

คำอธิบาย

smrdO2o} N`UT: zd \ _ # z = อินพุต

            : zd \ _ # แทนที่ช่องว่างด้วยขีดล่าง
      o # Sort ^ พร้อมฟังก์ชั่นคีย์ (N)
       } N`UT # N ใน "0123456789" ให้ตัวเลข 1 ตัวเพื่อให้เรียงลำดับไปทางขวา
 m # แผนที่อักขระทุกตัว d จาก ^
  rdO2 # แปลง randoms d เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก
s # join list กลับมาเป็นหนึ่งสาย

4

Mathematica, 86 ไบต์

ขอบคุณ Sp3000 สำหรับการบันทึก 1 ไบต์

RandomChoice[{ToLowerCase,Capitalize}]@#/." "->"_"&/@Characters@#~SortBy~{DigitQ}<>""&

Ahhh, การประมวลผลสตริง Mathematica ... มันไม่ได้น่ารัก นี่เป็นฟังก์ชันที่ไม่มีชื่อที่รับและส่งคืนสตริง

เนื่องจากน้ำตาลประโยคทั้งหมดลำดับการอ่านค่อนข้างตลก:

Characters@#

แยกสตริงออกเป็นตัวละครมิฉะนั้นเราจะทำอะไรไม่ได้เลย

...~SortBy~{DigitQ}

เรียงลำดับตัวเลขไปยังจุดสิ้นสุด โดยการห่อฟังก์ชั่นทดสอบในรายการเราทำให้การเรียงลำดับมีเสถียรภาพ

...&/@...

แมปฟังก์ชั่นซ้ายมือเหนืออักขระแต่ละตัวในรายการ

RandomChoice[{ToLowerCase,Capitalize}]

เลือกฟังก์ชันที่เปลี่ยนแปลงตัวอักษรแบบสุ่มสำหรับอักขระปัจจุบัน

...@#...

ใช้กับอักขระปัจจุบัน

.../." "->"_"

แทนที่ช่องว่างด้วยขีดล่าง

...<>""

ในที่สุดก็รวมตัวอักขระทั้งหมดเข้าด้วยกันเป็นสตริง


3

PowerShell, 113 ไบต์

-join([char[]]$args[0]-replace" ","_"|%{if($_-match"\d"){$d+=$_}else{"'$_'.To$("Low","Upp"|random)er()"|iex}})+$d

PowerShell ย่อมาจากภาษากอล์ฟที่น่ากลัว แบ่งออกเป็นอาร์เรย์ถ่านและแทนที่ช่องว่างด้วยขีดล่าง ใช้แต่ละตัวละครและกระบวนการ รวบรวมตัวเลขเป็นตัวแปร $ d สำหรับเอาต์พุตในภายหลัง ตัวละครแต่ละตัวอื่น ๆ สุ่มทำให้เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กโดยเรียกการแสดงออกในการใช้หรือ'char'.ToLower() 'char'.ToUpper()หากมีการรวบรวมตัวเลขใด ๆ ต่อท้ายพวกเขา


PowerShell ยอดเยี่ยมและทำทุกสิ่ง : D คุณสามารถบันทึกคู่ไบต์โดยใช้$_-in0..9และ-inผู้ประกอบการที่รู้จักใน PowerShell v3 แทน -matchregex
AdmBorkBork

3

Julia, 88 87 78 ไบต์

s->join([c<33?'_':rand([ucfirst,lcfirst])("$c")for c=sort([s...],by=isdigit)])

นี่คือฟังก์ชันที่ไม่ระบุชื่อที่ยอมรับสตริงและส่งคืนสตริง หากต้องการเรียกใช้กำหนดค่าให้กับตัวแปร

อันดับแรกเราแบ่งสตริงอินพุตเป็นอาร์เรย์ของอักขระและเรียงลำดับอาร์เรย์ตามว่าอักขระแต่ละตัวเป็นตัวเลขหรือไม่ สิ่งนี้จะรักษาลำดับในข้อความและตัวเลข แต่ดันตัวเลขไปยังจุดสิ้นสุด จากนั้นสำหรับตัวละครแต่ละตัวในอาเรย์เราตรวจสอบว่ามันว่างหรือไม่ ถ้าเป็นเช่นนั้นให้แทนที่ด้วยการขีดเส้นใต้มิฉะนั้นเลือกสุ่มหนึ่งucfirstหรือlcfirstเพื่อนำไปใช้กับตัวละครจึงแปลงเป็นตัวอักษรบนหรือล่างตามลำดับ เข้าร่วมอาร์เรย์เป็นสตริงและเราเสร็จแล้ว!

ลองที่นี่

บันทึกแล้ว 9 ไบต์ด้วย Sp3000!



1

ตัวคูณ 154 ไบต์

หรือ 222 เมื่อมีการนำเข้า kernel splitting sequences ascii combinators.random regexp

: f ( x -- y ) R/ \d/ R/ \D/ [ all-matching-subseqs ] bi-curry@ bi [ { [ >upper ] [ >lower ] } call-random ] map [ "" join ] bi@ " " "_" replace prepend ;

ฉันไม่เก่งเรื่องการตีกอล์ฟและฉันไม่แน่ใจว่าฉันใช้วิธีการที่ดีที่สุดที่นี่ แต่คิดว่าฉันควรจะไป


1

Ruby, 84 ไบต์

ฟังก์ชั่นไม่ระบุชื่อ การลบช่องว่างออกก่อนc.downcaseทำให้เกิดข้อผิดพลาดทางไวยากรณ์ด้วยเหตุผลบางอย่างและฉันไม่แน่ใจว่าทำไม

->s{q="";s.gsub(/./){|c|c=~/\d/?(q+=c;p):c==" "??_:rand<0.5?c.upcase: c.downcase}+q}

1

Lua, 125 ไบต์

เมื่อวัตถุเข้ากันกับการใช้งานคุณสามารถทำสิ่งที่น่ารักได้แม้ใน lua! ฉันไม่คิดว่าฉันจะลงสนามได้มันเป็นเรื่องยุ่งเหยิงไปหมดแล้วและฉันก็ยินดีที่จะเอาชนะคำตอบของไพ ธ อนส่วนใหญ่: D

s=""print((...):gsub("%d",function(d)s=s..d return""end):gsub("%s","_"):gsub("%a",1<math.random(2)and s.upper or s.lower)..s)

Ungolfed และคำอธิบาย

s=""                       -- Initialise the string that will contains the digits
print((...)                -- apply the following to the argument then print it
  :gsub("%d",function(d)   -- iterate over the digits
    s=s..d                 -- concatenate them in s
    return""               -- remove them from the arg
   end)
  :gsub("%s","_")          -- replace spaces by underscores
  :gsub("%a",              -- iterate over letters
    1<math.random(2)       -- pick a random integer between 1 and 2
      and s.upper          -- if it is 2, use the function upper() of object s
      or s.lower)          -- else, use the function lower() of object s
  ..s)                     -- concatenate with s

1

จริงจัง 25 ไบต์

,`'_' (Æ≈"ûù"J£ƒ`M;ì;(-+Σ

ลองออนไลน์!

คำอธิบาย:

,`'_' (Æ≈"ûù"J£ƒ`M;ì;(-+Σ
,`              `M         map over input:
  '_' (Æ                     replace spaces with underscores
        ≈                    cast to int (does nothing if cast fails)
         "ûù"J£ƒ             randomly upper- or lowercase it (does nothing if not letter)
                  ;ì;(-+   move ints to back
                        Σ  join

1

IPOS - ไม่ใช่การแข่งขัน 14 ไบต์

S'_RE`N-`dE!k?

ใช่ฉันเพิ่มสิ่งที่สร้างขึ้นสำหรับความท้าทายนี้ แต่สิ่งเหล่านั้นไม่ได้มีเป้าหมายเป็นพิเศษในปัญหานี้

นี้ทำงานร่วมกับรุ่น 0.1 ของล่าม

ตัวอย่างการวิ่ง

> python IPOS.py S'_RE`N-`dE! k? -i "pa55 w0rd"
Pa_WrD550

คำอธิบาย

     # Implicit: วางข้อมูลบน stack (C)
S # ดันช่องว่างไปยังสแต็ก (B)
'_ # ดันขีดล่างไปยังสแต็ก (A)
R # In C แทนที่ B ด้วย A -> แทนที่ขีดล่างด้วยช่องว่าง
     # สแต็กมีตอนนี้เท่านั้นสตริงแทนที่ (C)
E # กดสตริงว่าง (B)
`# เริ่มคำสั่งตามตัวอักษร
     # สแต็กสำหรับสิ่งนี้ได้รับการเริ่มต้นด้วยตัวอักษรเดี่ยว (B) ในภายหลัง
N # กดตัวเลข 0-9 เป็นสตริงไปยังสแต็ก (A)
- # ลบอักขระทุกตัวออกจาก B ที่อยู่ใน A
`# End คำสั่งตามตัวอักษร (A)
d # แยก C บน B เรียงลำดับชิ้นส่วนจากมากไปน้อยด้วยคีย์ A และเข้าร่วมกลับบน B
     # ฟังก์ชั่นคีย์ A แปลงอักขระแต่ละตัวของสตริงเป็นสตริงว่างถ้ามันเป็นตัวเลข
     # เนื่องจาก char ที่ได้นั้นไม่มีตัวเลขค่าหลักคือความยาว
     # นี่แมป 0 คีย์กับตัวเลขและคีย์ 1 กับไม่ใช่ตัวเลข เรียงลำดับจากมากไปน้อย
     # order ย้ายตัวเลขไปทางขวาและไม่ใส่ตัวเลขตามลำดับก่อนหน้านี้
E # กดสตริงว่าง
! k # กดคำสั่ง k (= swapcase)
? # ใช้ ^ กับตัวละครทุกตัวแบบสุ่ม
     # โดยนัย: เนื้อหาสแต็กเอาท์พุท

1

PHP, 368 ไบต์

$str = "pa55 w0rd";
$str = str_replace(" ","_",$str);
$output AND $numStr = "";
$numArray = ['0','1','2','3','4','5','6','7','8','9'];
for($i=0;$i<strlen($str);$i++){
    in_array($str[$i],$numArray)?($numStr = $numStr.$str[$i]):((rand(10,100)%2==0)?$str[$i] = strtoupper($str[$i]) AND $output = $output.$str[$i]:$output = $output.$str[$i]);
}
echo $output = $output.$numStr;

รหัส Ungolfed:

$str = "pa55 w0rd";
$str = str_replace(" ","_",$str);
$len = strlen($str);
$output = "";
$numStr = "";
$numArray = ['0','1','2','3','4','5','6','7','8','9'];
for($i=0;$i<$len;$i++){
  if(in_array($str[$i],$numArray)){
    $numStr = $numStr.$str[$i];
  }else {
      if(rand(10,100)%2==0)
      {
        $str[$i] = strtoupper($str[$i]);
      }
      $output = $output.$str[$i];
  }
}
$output = $output.$numStr;
echo $output;

นี่เป็นการเริ่มต้นที่ดี แต่คุณสามารถตีกอล์ฟนี้ได้มากขึ้น โปรดเปลี่ยนตัวแปรทั้งหมดเป็นชื่อ 1 อักขระและลบช่องว่างเพิ่มเติม เมื่อคุณทำเช่นนี้จะเป็นกอล์ฟชั้นหนึ่ง!
NoOne อยู่ที่นี่

0

Python 2, 179 ไบต์

from random import*
f=lambda s,a=[str.upper,str.lower],n='0123456789':''.join(map(lambda x:choice(a)(x),filter(lambda x:x not in n,s).replace(' ','_')))+filter(lambda x:x in n,s)

อาจมีห้องพักจำนวนมากสำหรับการปรับปรุงที่นี่ซึ่งฉันจะทำงานในภายหลัง


0

AWK, 128 ไบต์

{srand();for(;++i<=split($0,a,"");){s=a[i];if(s!=s+0){o=s==" "?"_":rand()>0.5?tolower(s):toupper(s);A=A o}else{N=N s}}print A N}

srand()เป็นสิ่งจำเป็นที่จะให้เราสุ่มตัวเลขที่แตกต่างกันในแต่ละครั้งที่มันวิ่ง
เพื่อให้ทำงานได้อย่างถูกต้องกับอินพุตหลายบรรทัดเราต้องใส่อะไรบางอย่างA=N=""ก่อนforลูป


0

Python 3.5 - 118 ไบต์:

from random import*
lambda y:''.join(choice([q.upper(),q.lower()])for q in sorted(y.replace(' ','_'),key=str.isdigit))

อย่างที่คุณเห็นฉันโดยทั่วไปใช้choiceฟังก์ชั่นโมดูลสุ่มเพื่อเลือกฟังก์ชั่นแบบสุ่ม (เช่น. upper () หรือ. lower ()) สำหรับตัวอักษรแต่ละตัวในเวอร์ชันที่เรียงลำดับของสตริงที่กำหนดซึ่งตัวเลขทั้งหมดไปที่ ปลาย นอกจากนี้ทุกพื้นที่จะถูกแทนที่ด้วยขีดล่างในสตริงที่เรียงลำดับ


0

PHP, 164 158 chars / bytes

มันดีกว่าPHP Golf ตัวอื่นเพราะ:

  • มันต้องใช้อินพุต
  • มันสั้นกว่า

ต้นฉบับ

<?$a=$b='';foreach(str_split(strtolower($argv[1]))as$c){if($c==' ')$c='_';if(preg_match("/[0-9]/",$c))$a.=$c;else$b.=(rand(0,1)?$c:strtoupper($c));}echo$b.$a;

ตัวอย่าง

php password.php 'thats some 1337 shit'

ThATs_Some__sHiT1337


0

> <> , 73 ไบต์

 i:"@")?v:" ")?v0) ?\rl?!;o01!.<
 v8<    8>00.! <o"_"/
8<>x<%*4/^o+*
 ^c<

ไม่มีอะไรบ้านี่มัน:

  • พิมพ์_เมื่อพบ 
  • ใช้ตัวอักษร 32 ของตัวอักษรจากนั้นเพิ่มแบบสุ่ม 8 * 8 หรือ 12 * 8 ก่อนที่จะพิมพ์
  • สแต็คตัวเลขและพิมพ์เมื่อสิ้นสุดอินพุต

คุณสามารถลองได้ที่นี่ !


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.