สิทธิ์ของไฟล์


26

สิทธิ์ของไฟล์

ดัดแปลงมาจาก UIL - คำถามการตอบสนองการเขียนโปรแกรมวิทยาศาสตร์คอมพิวเตอร์ฟรี "คาร์ล่า" สำหรับอำเภอ 2018

บทนำ

ในระบบปฏิบัติการที่คล้าย UNIX แต่ละไฟล์ไดเรกทอรีหรือลิงค์คือ "ผู้ใช้" ซึ่งเป็น "ผู้ใช้" ซึ่งเป็นสมาชิกของ "กลุ่ม" และมี "สิทธิ์" บางอย่างที่แสดงโดยสตริงสิบอักขระเช่น " drwxrwxrwx" อักขระตัวแรกคือ 'd', '-' หรือ 'l' (ไดเรกทอรีไฟล์หรือลิงค์) ตามด้วยค่า "rwx" สามชุดซึ่งระบุสิทธิ์การ "อ่านเขียนดำเนินการ" ชุดแรกคือสิทธิ์ของผู้ใช้ตรงกลางกำหนดสิทธิ์ของกลุ่มและสิทธิ์ของทุกคนที่สามสำหรับวัตถุนั้น

การอนุญาตที่ถูกปฏิเสธสำหรับสิทธิ์ใด ๆ เหล่านี้จะแสดงด้วย '-' แทนที่ 'r', 'w' หรือ 'x' ตัวอย่างเช่นสตริงสิทธิ์ไดเรกทอรีตัวอย่างจะเป็น "drwxr - r--" ซึ่งระบุสิทธิ์ไดเรกทอรีเต็มรูปแบบสำหรับผู้ใช้ แต่สิทธิ์ "อ่านอย่างเดียว" สำหรับสมาชิกกลุ่มและอื่น ๆ ทั้งหมด

ชุดค่าผสม "rwx" แต่ละชุดยังสามารถแทนด้วยค่าฐานแปด (0-7) พร้อมบิตที่สำคัญที่สุดที่แสดงถึงสิทธิ์การอ่านบิตที่สำคัญที่สุดถัดไปที่เป็นตัวแทนการเขียนและบิตที่มีนัยสำคัญน้อยที่สุด

ท้าทาย

กำหนดสตริงโค้ดสี่อักขระที่ประกอบด้วยอักขระ: 'D', 'F' หรือ 'L' ตามด้วยค่าจำนวนเต็มฐานแปดสามหลักเช่น 664 ให้ผลลัพธ์สตริงอักขระ 10 ตัวที่แสดงถึงค่าการอนุญาต ที่ระบุ

อินพุต

โปรแกรมหรือฟังก์ชั่นของคุณอาจอ่านอินพุตจากมาตรฐานใน (จะป้อนอักขระสี่ตัวตามด้วยบรรทัดใหม่) หรือส่งผ่านอินพุตเป็นอาร์กิวเมนต์

โปรแกรมของคุณอาจยอมรับอินพุตตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก แต่ต้องสอดคล้องกัน (อินพุตทั้งหมดเป็นตัวพิมพ์ใหญ่หรืออินพุตทั้งหมดเป็นตัวพิมพ์เล็ก)

เอาท์พุต

โปรแกรมของคุณต้องพิมพ์สตริงตัวอักษรสิบตัวที่แสดงถึงค่าการอนุญาตที่ระบุในรูปแบบที่แน่นอนที่ระบุไว้ข้างต้น อนุญาตให้ใช้พื้นที่สีขาวแบบหาง

กรณีทดสอบ

เข้า: F664ออก: เข้า-rw-rw-r--
: D775ออก: เข้าdrwxrwxr-x
: L334ออก: เข้าl-wx-wxr--
: F530ออก: เข้า-r-x-wx---
: D127ออก:d--x-w-rwx

เกณฑ์การให้คะแนนและกฎ


รออะไรถามเมื่อวานและคำตอบที่ยอมรับแล้ว? สิ่งนี้หมายความว่าไม่มีคำตอบเพิ่มเติมที่คาดไว้หรืออะไร
น.ต.

1
@Nit ยินดีต้อนรับคำตอบเพิ่มเติมเสมอไม่ว่าคำตอบนั้นจะได้รับการยอมรับหรือไม่
isaacg

1
@Nit ฉันใช้มือถือและพยายามหาคำตอบที่ไม่เกี่ยวข้อง (ซึ่งถูกลบไปตั้งแต่นั้น) ฉันกดปุ่มตอบรับโดยไม่ตั้งใจด้วยนิ้วอ้วน ฉันไม่สามารถหาวิธีรับได้ดังนั้นฉันจึงเปลี่ยนคำตอบที่ยอมรับให้เป็นคำตอบที่สั้นที่สุดในตอนนี้
Billylegota

2
@Nit ฉันหมายถึง ... เขายอมรับคำตอบของ Dennis ดังนั้นเขาอาจพูดถูก
Magic Octopus Urn

คำตอบ:


7

เยลลี่ขนาด 19 ไบต์

“rwx“-”Œp⁺;Ṁ⁾f-yị@~

ลองออนไลน์!

มันทำงานอย่างไร

“rwx“-”Œp⁺;Ṁ⁾f-yị@~  Main link. Argument: s (string)

“rwx“-”              Set the return value to ["rwx, "-"].
       Œp            Take the Cartesian product, yielding ["r-", "w-", "x-"].
         ⁺           Take the Cartesian product, yielding
                     ["rwx", "rw-", "r-x", "r--", "-wx", "-w-", "--x", "---"].
          ;Ṁ         Append the maximum of s (the letter).
            ⁾f-y     Translate 'f' to '-'.
                  ~  Map bitwise NOT over s.
                     This maps the letter to 0, because it cannot be cast to int,
                     and each digit d to ~d = -(d+1).
                ị@   Retrieve the results from the array to the left at the indices
                     calculated to the right.
                     Indexing is modular and 1-based, so the letter from s is at
                     index 0, "---" at index -1, ..., and "rwx" at index -8.

16

bash, 59 53 ไบต์

chmod ${1:1} a>a;stat -c%A a|sed s/./${1:0:1}/|tr f -

เครื่องมือที่เหมาะสมสำหรับงาน?

ขอบคุณเดนนิสสำหรับการบันทึก 5 ไบต์และHTNWสำหรับการบันทึก

ลองออนไลน์!

chmod ${1:1} a>a;  # call chmod with the input with its first character removed
                   # note that the redirection creates the file a *before* the
                   #   chmod is run, because of the way bash works
stat -c%A a|       # get the human readable access rights
sed s/./${1:0:1}/  # replace the first character with the first char of input
|tr f -            # transliterate, replacing f with -

นั่นเป็นไปอย่างรวดเร็ว แน่นอนว่าเป็นเครื่องมือที่เหมาะสมสำหรับงาน
Billylegota

chmod ${1:1} a>a;stat -c%A a|sed "s/-/\L${1:0:1}/;s/f/-/"บันทึกสองไบต์
เดนนิส

จะปิด @Dennis ผมคิดว่าคุณสามารถโกนหนึ่งมากขึ้นด้วยtrแทนy:chmod ${1:1} a>a;stat -c%A a|sed s/./\\L${1:0:1}/|tr f -
HTNW

2
ถือว่าถูกต้องหรือไม่ที่จะถือว่าไม่มีไฟล์aและผู้ใช้มีสิทธิ์ในการสร้างไฟล์หรือมีไฟล์aและผู้ใช้สามารถเขียนได้? เพราะถ้ามีไฟล์aที่เป็นเจ้าของโดยrootมีสิทธิ์700นี้ไม่ควรทำงาน
NoOne อยู่ที่นี่

2
ในขณะที่ @NoOneIsHere สิทธิ์โดยเฉพาะอย่างยิ่งไม่เคยขึ้นมาในการอภิปรายชุมชนตัดสินใจว่าการสร้างแฟ้มชั่วคราวในไดเรกทอรีปัจจุบันที่ได้รับอนุญาตโดยค่าเริ่มต้น โดยการขยายเราสามารถสันนิษฐานได้ว่าเป็นไปได้
เดนนิส

10

Python 2 , 78 ไบต์

lambda a,*b:[a,'-'][a=='f']+''.join('-r'[x/4]+'-w-w'[x/2]+'-x'[x%2]for x in b)

รับอินพุตเป็นอักขระและสาม ints
ลองออนไลน์!

คำอธิบาย

[a,'-'][a=='f']ใช้เวลาทั้งตัวท่านหรือถ้าตัวอักษรเป็น- เป็นหลักการแปลงฐานแปดเพื่อให้ได้สตริงf
'-r'[x/4]+'-w-w'[x/2]+'-x'[x%2]rwx



5

เรติน่า 0.8.2 , 43 ไบต์

\d
$&r$&w$&x
f|[0-3]r|[0145]w|[0246]x
-
\d

ลองออนไลน์! ลิงค์มีกรณีทดสอบ ใช้อินพุตเป็นตัวพิมพ์เล็ก คำอธิบาย:

\d
$&r$&w$&x

เพิ่มขึ้นสามเท่าแต่ละหลัก, suffixing ด้วยr, wและx.

f|[0-3]r|[0145]w|[0246]x
-

เปลี่ยนตัวอักษรที่ไม่ถูกต้องทั้งหมดเป็น-s

\d

ลบตัวเลขที่เหลืออยู่


4

เรติน่า 51 ไบต์

f
-
0
---
1
--x
2
-w-
3
-wx
4
r--
5
r-x
6
rw-
7
rwx

ลองออนไลน์!

ไม่มีความคิดวิธีใช้ Retina ดังนั้นโปรดแจ้งให้เราทราบวิธีการทำสิ่งนี้ให้ดีขึ้น ฉันเพิ่งคิดว่าฉันพยายามที่จะเรียนรู้ภาษาอย่างน้อยหนึ่งภาษาที่ไม่ใช่ Pyth

คำอธิบาย:

แทนที่fด้วย-(ออกdและlไม่เปลี่ยนแปลง) rwxแล้วแทนที่แต่ละหลักที่เหมาะสมกับ


: / ฉันจะได้รับเท่านี้แต่ไม่เพิ่มเติม และวิธีที่ชาญฉลาดนั้นไม่อัปลักษณ์อย่างยิ่ง
เท่านั้น

มันจะเป็นนักเล่นกอล์ฟจำนวนมากที่มีผู้ประกอบการสามคน / ตรรกะหรือ / เพิ่มและตัดแต่ง
ASCII เท่านั้น

@ ASCII-only ความคิดของคุณค่อนข้างดีฉันได้ใช้มันสำหรับคำตอบนี้ :)
Leo

4

JavaScript (ES6), 63 ไบต์

คาดว่าสตริงอินพุตเป็นตัวพิมพ์เล็ก

s=>s.replace(/\d|f/g,c=>1/c?s[c&4]+s[c&2]+s[c&1]:'-',s='-xw-r')

ลองออนไลน์!

แสดงความคิดเห็น

s => s.replace(   // replace in the input string s
  /\d|f/g, c =>   //   each character c which is either a digit or the letter 'f'
    1 / c ?       //   if c is a digit:
      s[c & 4] +  //     append '-' or 'r'
      s[c & 2] +  //     append '-' or 'w'
      s[c & 1]    //     append '-' or 'x'
    :             //   else:
      '-',        //     just replace 'f' with '-'
  s = '-xw-r'     //   s holds the permission characters
)                 // end of replace()

4

ถ่าน 27 ไบต์

FS≡ιdιlιf¦-⭆rwx⎇§↨⁺⁸Iι²⊕λκ-

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

 S                          Input string
F                           Loop over characters
   ι                        Current character
  ≡                         Switch
    d                       Literal `d`
     ι                      Implicitly print current character
      l                     Literal `l`
       ι                    Implicitly print current character
        f                   Literal `f`
         ¦                  (Separator between string literals)
          -                 Implicitly print literal `-`
                            Implicit default case
            rwx             Literal `rwx`
           ⭆                Map over characters
                     ι      Input character
                    I       Cast to integer
                   ⁸        Literal 8
                  ⁺         Sum
                      ²     Literal 2
                 ↨          Base conversion
                        λ   Inner index
                       ⊕    Incremented
                §           Index into base conversion
                         κ  Inner character
                          - Literal `-`
               ⎇            Ternary
                            Implicitly print

4

Haskell , 84 83 81 ไบต์

f 'f'='-'
f y=y
t#n=f t:((\x->["-r"!!div x 4,"-w-w"!!div x 2,"-x"!!mod x 2])=<<n)

ลองออนไลน์!

จบลงด้วยความคล้ายคลึงกันในแนวคิดของคำตอบ Python 2 ของ Mnemonic f สร้างประเภทไฟล์ส่วนที่เหลือคือการได้รับอนุญาตจากหมายเลขฐานแปด อันนี้ทำให้ฉันอยาก & เป็นบิตและผู้ประกอบการรวมอยู่ในโหมโรง


2
คุณสามารถใช้แทนdiv quot
nimi

4

Java 8, 100 ไบต์

s->s.replaceAll("(\\d)","$1r$1w$1x").replaceAll("f|[0-3]r|[0145]w|[0246]x","-").replaceAll("\\d","")

ลองออนไลน์

พอร์ตของ@Neilคำตอบ Retina 's

คำอธิบาย:

s->                                 // Method with String as both parameter and return-type
  s.replaceAll("(\\d)","$1r$1w$1x") //  Replace every digit `d` with 'drdwdx'
   .replaceAll("f                   //  Replace every "f",
                |[0-3]r             //  every "0r", "1r", "2r", "3r",
                |[0145]w            //  every "0w", "1w", "4w", "5w",
                |[0246]x",          //  and every "0x", "2x", "4x", "6x"
               "-")                 //  with a "-"
   .replaceAll("\\d","")            //  Remove any remaining digits

นี่คือสมาร์ท! ;)
Olivier Grégoire

@ OlivierGrégoireส่วนใหญ่เป็นเพราะมันบันทึกในคำสั่งการส่งคืนและลูป น่าเสียดายที่บุคคลสามคน.replaceAllนั้นยังคงมีไบต์น้อยกว่าลูปด้วย.replaceAllและเพิ่มreturnและอาร์เรย์สตริง .. แต่แน่นอนว่าเครดิตไปที่นีลซึ่งเป็นคำตอบของ Retina ที่ฉันใช้เป็นฐานไปยังพอร์ตจาก
Kevin Cruijssen

3

เยลลี่ 21 ไบต์

Ḣ⁾f-yɓOBṫ€4a“rwx”o”-ṭ

การพิมพ์โปรแกรมแบบเต็มไปยัง STDOUT (เป็นลิงก์แบบ monadic ค่าส่งคืนคือรายการที่มีอักขระและรายการอักขระสามรายการ)

ลองออนไลน์! หรือดูการทดสอบในตัว

อย่างไร?

Ḣ⁾f-yɓOBṫ€4a“rwx”o”-ṭ | Main Link: list of characters
Ḣ                     | head & pop (get the 1st character and modify the list)
 ⁾f-                  | list of characters = ['f', '-']
    y                 | translate (replacing 'f' with '-'; leaving 'd' and 'l' unaffected)
     ɓ                | (call that X) new dyadic chain: f(modified input; X)
      O               | ordinals ('0'->48, '1'->59, ..., '7'->55 -- notably 32+16+value)
       B              | convert to binary (vectorises) (getting three lists of six 1s and 0s)
        ṫ€4           | tail €ach from index 4 (getting the three least significant bits)
           “rwx”      | list of characters ['r', 'w', 'x']
          a           | logical AND (vectorises) (1s become 'r', 'w', or 'x'; 0s unaffected)
                 ”-   | character '-'
                o     | logical OR (vectorises) (replacing any 0s with '-'s)
                   ṭ  | tack (prepend the character X) 
                      | implicit print (smashes everything together)


3

เรติน่า , 38 ไบต์

แรงบันดาลใจจากความคิดเห็นจากASCII เท่านั้น

\d
---$&*
---____
r--
--__
w-
-_
x
f
-

ลองออนไลน์!

แนวคิดนี้กำลังแปลงตัวเลขแต่ละตัวให้เป็นเอกภาพ (ค่าเริ่มต้นหลักแบบเอกภาพใน Retina คือ_) ที่มี-ตัวเลขนำหน้าอยู่สามตัว


2

Python 3 , 71 ไบต์

lambda s:("-"+s)[s[0]!="f"]+stat.filemode(int(s[1:],8))[1:]
import stat

ลองออนไลน์!

Python 3.3+ มีการติดตั้งในตัวถึงแม้ว่าจะต้องนำเข้าและความแตกต่างในรูปแบบอินพุตที่คาดไว้มันไม่เป็นมิตรกับกอล์ฟ


2

Tcl , 139 ไบต์

proc P s {join [lmap c [split $s ""] {expr {[regexp \\d $c]?"[expr $c&4?"r":"-"][expr $c&2?"w":"-"][expr $c&1?"x":"-"]":$c==f?"-":$c}}] ""}

ลองออนไลน์!


Tcl , 144 ไบต์

proc P s {join [lmap c [split $s ""] {expr {[regexp \\d $c]?[list [expr $c&4?"r":"-"][expr $c&2?"w":"-"][expr $c&1?"x":"-"]]:$c==f?"-":$c}}] ""}

ลองออนไลน์!

Tcl , 149 ไบต์

proc P s {join [lmap c [split $s ""] {if [regexp \\d $c] {list [expr $c&4?"r":"-"][expr $c&2?"w":"-"][expr $c&1?"x":"-"]} {expr {$c==f?"-":$c}}}] ""}

ลองออนไลน์!

Tcl , 150 ไบต์

proc P s {join [lmap c [split $s ""] {if [regexp \\d $c] {set v [expr $c&4?"r":"-"][expr $c&2?"w":"-"][expr $c&1?"x":"-"]} {expr {$c==f?"-":$c}}}] ""}

ลองออนไลน์!

Tcl , 180 ไบต์

proc P s {join [lmap c [split $s ""] {if [regexp \\d $c] {[set R regsub] (..)1 [$R (.)1(.) [$R 1(..) [$R -all 0 [format %03b $c] -] r\\1] \\1w\\2] \\1x} {expr {$c==f?"-":$c}}}] ""}

ลองออนไลน์!

ยังไม่ดีมาก!


2

Java (JDK 10) , 118 ไบต์

s->{var r=s[0]=='f'?"-":""+s[0];var z="-xw r".split("");for(int i=0;++i<4;)r+=z[s[i]&4]+z[s[i]&2]+z[s[i]&1];return r;}

ลองออนไลน์!

เครดิต

  • บันทึกได้ 13 ไบต์ขอบคุณKevin Cruijssen

2
เมื่อคุณรับอินพุตเป็นตัวพิมพ์เล็กfdlคุณสามารถเปลี่ยนเป็นvar r=s[0]<70?"d":s[0]<72?"-":"l";เป็นvar r=s[0]=='f'?"-":s[0]+"";6 ไบต์ได้ นอกจากนี้ยัง.toCharArray()สามารถ.split("")บันทึกเพิ่มเติม 4 ไบต์
Kevin Cruijssen

2
@KevinCruijssen ความคิดของคุณทำให้ฉันประหยัดได้ 13 ไบต์ไม่ใช่ 10 (เนื่องจากฉันสามารถลบ""+ต่อไปเพื่อ "ส่ง" เป็นchara String);) ขอบคุณ!
Olivier Grégoire

2

Excel, 224 ไบต์

=IF(LEFT(A1,1)="f","-",LEFT(A1,1))&CHOOSE(MID(A1,2,1)+1,"---","--x","-w-","-wx","r--","r-x","rw-","rwx")&CHOOSE(MID(A1,3,1)+1,"---","--x","-w-","-wx","r--","r-x","rw-","rwx")&CHOOSE(MID(A1,4,1)+1,"---","--x","-w-","-wx","r--","r-x","rw-","rwx")

ทำใน 4 ขั้นตอน:

IF(LEFT(A1,1)="f","-",LEFT(A1,1))    Replace "f" with "-".

และ 3 ครั้ง:

CHOOSE(MID(A1,2,1)+1,"---","--x","-w-","-wx","r--","r-x","rw-","rwx")

พยายามอย่างชาญฉลาดเพิ่ม25 bytesสิทธิ์ต่อชุดรวม 75 สิทธิ์:

IF(INT(MID(A1,2,1))>3,"r","-")&IF(MOD(MID(A1,2,1),4)>1,"w","-")&IF(ISODD(MID(A1,2,1)),"x","-")

2

05AB1E , 34 27 ไบต์

ćls8βbvyi…rwx3*Nèë'-}J'f'-:

ลองออนไลน์!

ลดขนาดลง 7 ไบต์โดย@MagicOctopusUrn


ć                           # Remove head from string.
 ls                         # Lowercase swap.
   8βb                      # Octal convert to binary.
      vy                    # For each...
        i        ë  }
         …rwx3*Nè           # If true, push the correct index of rwx.
                  '-        # Else push '-'.
                     J      # Repeatedly join stack inside the loop.
                      'f'-: # Repeatedly replace 'f' with '-' inside the loop.

ćls8βbvyi…rwx3*Nèë'-}J'f'-:เป็นเวลา7 น้อย ...
Magic Octopus Urn

โดยทั่วไปเป็นเพียงแค่การสั่งซื้อที่แตกต่างกันโดยใช้ถ้างบและแทนที่จะเอาfฉันแค่เปลี่ยนทั้งหมด'ในสตริงสุดท้ายกับf -
Magic Octopus Urn

i <CODE FOR TRUE> ë <CODE FOR FALSE> }
Magic Octopus Urn

@MagicOctopusUrn Nice!
Geno Racklin Asher

1

Python 2 , 238 ไบต์

lambda m,r=str.replace,s=str.split,j="".join,b=bin,i=int,z=str.zfill,g=lambda h,y:y if int(h)else "-":r(m[0],"f","-")+j(j([g(z(s(b(i(x)),"b")[1],3)[0],"r"),g(z(s(b(i(x)),"b")[1],3)[1],"w"),g(z(s(b(i(x)),"b")[1],3)[2],"x")])for x in m[1:])

ลองออนไลน์!

ฉันสันนิษฐานว่านี่จะเป็นการทิ้งถัง แต่ฉันผิดแน่นอน อาจเป็นไปได้ว่าตระหนักว่าแลมบ์ดาไม่ใช่ความคิดที่ดีที่สุดในบางจุด



1

APL + WIN, 55 ไบต์

แสดงพร้อมต์สำหรับสตริงอินพุตด้วยตัวพิมพ์เล็กตัวพิมพ์ใหญ่:

('dl-'['dlf'⍳↑t]),⎕av[46+(,⍉(3⍴2)⊤⍎¨⍕1↓t←⎕)×9⍴69 74 75]

คำอธิบาย:

9⍴69 74 75 create a vector of ascii character codes for rwx -46, index origin 1

1↓t←⎕ prompt for input and drop first character

,⍉(3⍴2)⊤⍎¨⍕ create a 9 element vector by concatenating the binary representation for each digit 

46+(,⍉(3⍴2)⊤⍎¨⍕1↓t←⎕)×9⍴69 74 75 multiply the two vectors and add 46

⎕av[.....] convert back from ascii code to characters, 46 being '-'

('dl-'['dlf'⍳↑t]), append first character from input swapping '-' for 'f'


1

J , 57 52 ไบต์

บันทึก 5 ไบต์ด้วย FrownyFrog!

-&.('-DLld'i.{.),[:,('-',:'rwx'){"0 1&.|:~1#:@}."."0

ลองออนไลน์!

วิธีแก้ปัญหาที่ยาวนานอีกข้อหนึ่ง ... ฉันไม่รู้วิธีการ}ทำงานโดยใช้คำกริยาโดยปริยายและนั่นเป็นสาเหตุที่ฉันใช้งานนานกว่ามาก{"0 1&.|:ในการคัดเลือก

คำอธิบาย:

@}. วางสัญลักษณ์แรกและ

,.&.": แปลงส่วนที่เหลือเป็นรายการของตัวเลขที่สำคัญ

]:#: แปลงแต่ละหลักเป็นรายการของเลขฐานสอง (และปิดท้ายด้วยส้อม)

('-',:'rwx') สร้างตาราง 2 แถวและใช้ 0 เพื่อเลือกจากแถวแรก / 1 - จากตารางที่สอง

   '-',:'rwx'
---
rwx

{"0 1&.|:~ ใช้เลขฐานสองเพื่อเลือกจากตารางด้านบน

[:, แบนผลลัพธ์

('d-l'{~'DFL'i.{.) จัดรูปแบบสัญลักษณ์แรก

, ผนวกสัญลักษณ์ fisrt ต่อท้ายรายการการอนุญาต


1
อินพุตเป็นสตริงอยู่แล้วคุณต้องการ1#:@}."."0
FrownyFrog

1
ดูเหมือนว่าจะใช้งานได้: ('d-l'{~'DFL'i.{.)-&.('-DLld'i.{.)
FrownyFrog

@ กบนี่ฟร็อกใช้ดีมากi.และ&.ขอบคุณมาก! โดยวิธีการที่คุณสามารถอธิบายให้ฉันวิธีการใช้เลือก}ในคำกริยาโดยปริยาย?
Galen Ivanov

1
2 2 2&#:`('-',:'rwx'"_)}@"."0@}.ความยาวเท่ากันทุก
ประการ

แต่มันไม่ได้ทำลายบน333:)
FrownyFrog

1

PHP, 68 ไบต์

<?=strtr(strtr($argn,[f=>_,___,__x,_w_,_wx,r__,r_x,rw_,rwx]),_,"-");

แปลfในอินพุตตัวพิมพ์เล็กเป็นขีดล่างและทุก ๆ เลขฐานแปดให้rwxเท่ากับโดยใช้เครื่องหมายขีดล่างแทนเครื่องหมายขีดกลาง (เพื่อบันทึกความต้องการใบเสนอราคา) จากนั้นแทนที่_ด้วย-ด้วย

ทำงานเป็นท่อที่มี-nFหรือลองออนไลน์


1

C (gcc) , 109 104 ไบต์

อย่างน้อย C สามารถแปลงอินพุตฐานแปดได้ .... :-)

แก้ไข:ฉันรู้ว่าตัวปรับขนาดไม่ได้ต้องการอย่างเคร่งครัดและนั่นputchar()สั้นกว่าprintf()ในกรณีนี้!

f(a,b){char*s="-xwr";scanf("%c%o",&a,&b);putchar(a-70?a:*s);for(a=9;~--a;putchar(s[(1&b>>a)*(a%3+1)]));}

ลองออนไลน์!

เดิม:

f(a,b){char*s="-xwr";scanf("%c%3o",&a,&b);putchar(a-70?a:*s);for(a=9;~--a;printf("%c",s[(1&b>>a)*(a%3+1)]));}

ลองออนไลน์!

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