จัดการถังขยะดังนั้น


35

มันค่อนข้างเป็นประเพณีใน PPCG ที่ผู้ใช้บางคนเปลี่ยนชื่อของพวกเขาชั่วคราวด้วยแอนนาแกรม (ชื่อใหม่ที่เกิดขึ้นจากการเรียงลำดับตัวอักษรเก่า)

บางครั้งมันก็ยากที่จะค้นหาว่าใครเป็นใคร ฉันสามารถใช้โปรแกรมหรือฟังก์ชั่นเพื่อบอกได้ว่าวลีสองวลีเป็นแอนนาแกรมของกันและกัน

ความท้าทาย

โปรแกรมหรือฟังก์ชั่นควรใช้สองสายและสร้างผลลัพธ์ที่เป็นความจริงหากพวกเขาเป็นภาพของกันและกันและเป็นอย่างอื่นเท็จ

กฎระเบียบ

  • ข้อมูลที่ป้อนจะมีเฉพาะตัวอักษร (ASCII 65 ถึง 90 และ 97 ถึง 122) ตัวเลข (ASCII 48 ถึง 57) หรือเว้นวรรค (ASCII 32)
  • ความสัมพันธ์แอนนาแกรมนั้นขึ้นอยู่กับแต่ละกรณี ดังนั้น "แขน" และ "RAM" จึงเป็นแบบแอนนาแกรม
  • ช่องว่างไม่นับเช่นกัน ดังนั้น "คีย์บอร์ด" และ "Barked Yo" จึงเป็นแอนนาแกรม
  • อนุญาตบิวอินได้ทั้งหมด
  • รูปแบบอินพุตมีความยืดหยุ่น (สองสตริง, อาร์เรย์ของสองสตริง, สตริงที่มีทั้งวลีที่มีตัวคั่นที่เหมาะสม ... )

รหัสกอล์ฟ ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ

กรณีทดสอบ

Truthy:

Lynn, Nyl N
Digital Trauma, Tau Digital Arm
Sp3000, P S 3000
Manage Trash So, Those anagrams

Falsy

Calvins Hobbies, Helka Homba
Android, rains odd
In between days, bayed entwine
Code golf, cod elf got

8
ที่เกี่ยวข้องแต่แตกต่างกัน (ตัวอักษรเท่านั้นไม่มีกรณีไม่มีช่องว่าง)
Luis Mendo

4
ชื่อคำถามนี้น่าสงสัยมากสำหรับคนที่ไม่มีกาแฟเพียงพอ +1: D
แมว

1
@ DonMuesli ฉันจะเถียงว่านี่ยังเป็นคนหลงกล การเปลี่ยนแปลงเล็กน้อยมีความสำคัญมาก
Mego

15
Manage Trash So, Those anagrams. ดี
mbomb007

3
So, the anagrams...
Leun Nun

คำตอบ:



15

จอประสาทตา 25

i+`(\w)(.*,.*)\1
$2
^\W*$

ลองออนไลน์! นอกจากนี้คุณสามารถเรียกใช้เวอร์ชันหลายคู่สายที่แก้ไขได้

ลบตัวอักษรจากก่อนเครื่องหมายจุลภาคพร้อมกับการแข่งขันหลังเครื่องหมายจุลภาค หากเราไม่มีจดหมายเหลืออยู่มันก็เป็นแอนนาแกรม


สำหรับ Retina หากจำนวนบวกอาจถูกพิจารณาว่าเป็นความล้มเหลวและจะถือว่าเป็นศูนย์สำเร็จซึ่งอาจสั้นลงสามไบต์โดยใช้\wเป็นด่านสุดท้าย
FryAmTheEggman


@ dev-null "การป้อนข้อมูลจะมีเฉพาะตัวอักษร (ASCII 65 ถึง 90 และ 97 ถึง 122) ตัวเลข (ASCII 48 ถึง 57) หรือเว้นวรรค (ASCII 32)"
FryAmTheEggman

11

Pyth, 11 10 ไบต์

ขอบคุณ @FryAmTheEggman สำหรับการสอนพลังของฉัน;!

qFmSr-d;0Q

ลองที่นี่!

ใช้รายการของสองสายเป็นอินพุต

คำอธิบาย

qFmSr-d; 0Q # Q = อินพุต

  m Q # map Q กับ d เป็นตัวแปรแลมบ์ดา
     -d; # กรองช่องว่างออกจากสตริง
    r 0 # แปลงเป็นตัวพิมพ์เล็ก
   S # เรียงลำดับอักขระทั้งหมดในสตริง
qF # เปิดเผยรายการผลลัพธ์และตรวจสอบความเท่าเทียมกัน

10

Python 2, 63 61 ไบต์

lambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2

ฟังก์ชั่นที่ไม่ระบุชื่อซึ่งในความเป็นจริงรับอาร์กิวเมนต์nและพิจารณาว่าnทั้งหมดนั้นเป็น palindromes ร่วมกันหรือไม่! ผลตอบแทนf("Lynn", "Nyl N")True

เคล็ดลับความเข้าใจชุดนี้คือโดย xnor มันช่วยสองไบต์ แต่วิธีเก่าดูเรียบร้อยมาก:

exec"a=`sorted(input().lower())`[2::5].strip();a"*2;print a==aa

`sorted(input().lower())`.strip(" [',")ความยาวเท่ากัน: /
Sp3000

execสิ่งที่เป็นคนฉลาด แต่ดูเหมือนซับซ้อนเกินไป lambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2คุณสามารถทำได้ดีขึ้นด้วย
xnor

2
ขอบคุณ! ฉันผิดหวังเล็กน้อย - มันดูดีมาก เก็บไว้ในโพสต์ต่อไป
ลินน์

7

เยลลี่ 12 ไบต์

ḟ€⁶O&95Ṣ€QLḂ

ลองออนไลน์!

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

ḟ€⁶O&95Ṣ€QLḂ  Main link. Input: A (list of strings)

  ⁶           Yield ' '.
ḟ€            Filter it from each string.
   O          Apply ordinal to all characters.
    &95       Take bitwise AND with 95 to make the ordinals case-insensitive.
       Ṣ€     Sort each list of ordinals.
         Q    Deduplicate the list.
          L   Get the length.
           Ḃ  Compute the length's parity (1 -> 1, 2 -> 0).

รุ่นอื่นไม่ใช่การแข่งขัน (9 ไบต์)

อะตอมตัวพิมพ์ใหญ่ของ Jelly มีข้อบกพร่องและ Jelly ยังไม่มี built-in ในการทดสอบรายการเพื่อความเท่าเทียมกัน ...

ḟ⁶ŒuṢµ€⁼/

ลองออนไลน์!

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

ḟ⁶ŒuṢµ€⁼/     Main link. Input: A (list of strings)

     µ€       Map the chain to the left over A.
 ⁶            Yield ' '.
ḟ             Filter it from the string.
  Œu          Cast to uppercase.
    Ṣ         Sort.
       ⁼/     Reduce by equality.

6

CJam, 11 12 14ไบต์

ลบ3 2ไบต์ขอบคุณ @FryAmTheEggman

{lelS-$}2*=

ลองออนไลน์!

{      }2*       e# do this twice
 l               e# read line as a string
  el             e# make lowercase
    S-           e# remove spaces from string
      $          e# sort
          =      e# compare strings

@FryAmTheEggman ขอบคุณ!
Luis Mendo เมื่อ

@FryAmTheEggman ขอบคุณอีกครั้ง! ฉันยังมีอะไรอีกมากให้เรียนรู้เกี่ยวกับ CJam :-)
Luis Mendo

3
รหัสของคุณแอบหัวเราะ lel.
Cyoce

หรือเป็นหนึ่งเดียว lel==> 1e1ไม่มีใครรู้ มันเป็นเรื่องลึกลับ
user48538

6

Javascript, 69 61 60 59 ไบต์

1 ไบต์ปิดขอบคุณ@ ӍѲꝆΛҐӍΛПҒЦꝆ 1 ไบต์ปิดด้วยการแกง ( ชี้โดย@apsillers )

n=>m=>(G=s=>[]+s.toLowerCase().split(/ */).sort())(n)==G(m)


2
ดีมากกรองช่องว่างและแปลงเป็นอาร์เรย์ในเวลาเดียวกัน!
Neil

2
ดีมาก. คุณสามารถบันทึกหนึ่งไบต์ใช้ currying ซึ่งชุมชนได้ตัดสินใจที่เป็นรูปแบบที่ได้รับการยอมรับของการขัดแย้ง :n=>m=>...
apsillers

ลองn=>m=>(G=s=>[]+s.toLowerCase().split(/\S/).sort())(n)==G(m)ดู การใช้การแยกแทนการจับคู่ควรช่วยคุณประหยัดไบต์
Mama Fun Roll

@ ӍѲꝆΛҐӍΛПҒЦꝆ ไม่เพราะสมมติว่าs='db cz'... ตอนนี้ส่งผลให้... และส่งผลให้s.match(/\S/g).sort()['b','c','d','z']s.split(/\s/).sort()['cz','db']
ลบ

@ ӍѲꝆΛҐӍΛПҒЦꝆ แต่ ... เมื่อมองถึงความคิดของคุณฉันเปลี่ยนมันแล้วบันทึกหนึ่งไบต์ ... ขอบคุณ!
ลบ

6

MATL 11 ไบต์

2:"jkXvS]X=

แก้ไข (20 พฤษภาคม 2016) รหัสในลิงก์ใช้XzแทนXvเนื่องจากมีการเปลี่ยนแปลงล่าสุดในภาษา

ลองออนไลน์!

2:"     ]       % do this twice
   j            % read input line as a string
    k           % convert to lowercase
     Xv         % remove spaces
       S        % sort
         X=     % are they equal?

3
คุณเพียงแค่เปลี่ยนชื่อของคุณสำหรับความท้าทายที่?
Denker

3
@DenkerAffe ฉันเคยคิดเกี่ยวกับมันมาระยะหนึ่งแล้ว ฉันเพิ่งทำให้มันตรงกับความท้าทาย :-)
Luis Mendo

1
ดอนมูสลี่ ดังนั้นคุณคือพระเจ้าแห่งมูสลี่หลุยส์! นี่เป็นวิธีที่ทำให้ผิวพรรณแข็งแรงหรือไม่?
rayryeng - Reinstate Monica

@rayryeng Heyyy! ดีใจที่ได้พบคุณที่นี่เรย์! กลับไปเล่นกอล์ฟ!
Luis Mendo เมื่อ

ฉันสัญญาว่าฉันจะ :) เมื่อจบหลักสูตรนี้ ... ฉันเห็นว่าคุณกำลังเรียนรู้ CJam ด้วยเช่นกัน ดีมาก!
rayryeng - Reinstate Monica

4

อย่างจริงจัง11 9 ไบต์

2`,ùSô`n=

ลองออนไลน์!

ทุกคนดูเหมือนจะใช้อัลกอริทึมเดียวกัน ที่นี่เป็นอีกครั้ง

2`    `n          Do it twice
  ,               Read a string
   ù              Make it lowercase
    S             Sort
     ô            Strip spaces.
        =         Check equality.

แก้ไข: การเรียงลำดับที่ตระหนักจะทำงานได้อย่างถูกต้องกับสตริงและเรียงลำดับช่องว่างที่ด้านหน้าเพื่อให้แถบ () ทำงานได้


4

C, 165 ไบต์

#define d(x) int x(char*a,char*b){
d(q)return*a&224-*b&224;}
#define n(x) for(qsort(x,strlen(x),1,(__compar_fn_t)q);*x<33;x++);
d(s)n(a)n(b)return strcasecmp(a,b);}

อ่านได้และในบริบทการทำงาน

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

// start of comparison
int q(char *a, char *b){
     return ((*a)&0xdf)-((*b)&0xdf); // case-insensitive
}
int s(char *a, char *b){
    for(qsort(a,strlen(a),1,(__compar_fn_t)q); *a<33; a++) /**/;
    for(qsort(b,strlen(b),1,(__compar_fn_t)q); *b<33; b++) /**/;
    return strcasecmp(a,b);
}
// end of comparison

int main(int i, char **v){
    printf("'%s' '%s'", v[1], v[2]);
    printf("=> %d\n", s(v[1], v[2])); // 0 if equalish
    return 0;
}

3

zsh, 85 ไบต์

[ $(for x in $@;{tr -d \ <<<$x|tr A-Z a-z|fold -1|sort|paste -sd x}|uniq|wc -l) = 1 ]

อินพุตเป็นอาร์กิวเมนต์บรรทัดรับคำสั่งเอาต์พุตเป็นโค้ดส่งคืน

forไวยากรณ์นี้จะทำให้ทุบตีเข้ากันไม่ได้

[               # test...
$(for x in $@;  # map over arguments
{tr -d \ <<<$x  # remove spaces
|tr A-Z a-z     # lowercase
|fold -1        # put each character on its own line
|sort           # sort lines
|paste -sd x    # remove all newlines except last
}|uniq          # take only unique lines
|wc -l          # how many lines remain?
) = 1 ]         # if only 1 line left, it must have been an anagram

3

Japt, 12 ไบต์

N®v ¬n ¬xÃä¥

ทดสอบออนไลน์!

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

        // Implicit: N = array of input strings
N®    Ã // Take N, and map each item Z to:
v ¬n    //  Take Z.toLowerCase(), split into chars, and sort.
¬x      //  Join and trim off whitespace.
ä¥      // Reduce each pair of items (that's exactly one pair) X and Y to X == Y.


3

Perl, 34 33 + 1 = 34 ไบต์

s/(.)(.*,.*)\1/$2/i?redo:say!/\w/

ต้องใช้-nธงและฟรี-M5.010| -E:

$ perl -M5.010 -ne's/(.)(.*,.*)\1/$2/i?redo:say!/\w/' <<< 'hello, lloeh'
1

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

                                   # '-n' make a implicit while loop around the code
 s/(.)(.*,.*)\1/$2/i               # Remove a letter that occurs on both sides of the comma.
                    ?
                     redo:         # Redo is a glorified goto statement that goes to the top of the while loop
                          say!/\w/ # Check to see if any letter is left

ขอบคุณmsh210สำหรับการแนะนำให้ใช้ผู้ประกอบการที่ประกอบไปด้วยเพื่อบันทึกหนึ่งไบต์


3

Baloch Gyrขนาด 9 ไบต์

{ṇ₁cḷ}ᵐpᵈ

ลองออนไลน์!

เอาท์พุท Truthy / falsy สามารถทำได้ผ่านการทำนายความสำเร็จ / ความล้มเหลวซึ่งเป็น Brachylog

บันทึกไว้ก่อนหน้าไบต์ใช้cṇ₁cḷḍแทน{ṇ₁cḷ}ᵐภายใต้สมมติฐานที่ว่าสองสายการป้อนข้อมูลจะเหมือนกันช่องว่างยาวลบ Ah Hass, hahaแต่ฉันรู้ว่ามันจะประสบความสำเร็จที่มันควรจะล้มเหลวใน

{    }ᵐ      For both strings in the input,
 ṇ₁          split on spaces,
   c         concatenate,
    ḷ        and lowercase.
       pᵈ    The strings are permutations of each other.

2

PHP, 109 94 ไบต์

function f($x){return str_split((trim($x));}function g($x,$y){return array_diff(f($x),f($y));}

Blech ทั้งสองfunction/returnกำลังฆ่าฉันที่นี่

ส่งคืนความแตกต่างระหว่างสองstringอินพุตเป็นarrayอักขระ PHP พิจารณาความ[]ผิดพลาดซึ่งเป็นไปreturnตามข้อกำหนด


3
function($x,$y){$S=str_split;return array_diff($S(trim($x)),$S(trim($y)));}-> 75 ไบต์ สร้างฟังก์ชั่นที่ไม่ระบุชื่อที่ส่งคืนผลลัพธ์ ฉันได้ลบฟังก์ชั่นที่ยาวนานและแทนที่การเรียกไปstr_splitด้วยตัวแปรที่กำหนดเพื่อทำให้สั้นลง
Ismael Miguel

ดี ฉันปรับแต่งมันเพื่อลดมันลงในฟังก์ชั่นเดียวนี่เป็นสองขั้นตอนก่อนหน้านั้นทำได้ดีมาก
ricdesi

2

ยูทิลิตี Bash + GNU, 51

f()(fold -1<<<${@^^}|sort)
f $1|diff -qBw - <(f $2)
  • กำหนดฟังก์ชั่นf()ซึ่ง:
    • ${@^^} แปลงพารามิเตอร์ทั้งหมดเป็นตัวพิมพ์ใหญ่
    • fold -1 แยกตัวอักษร - หนึ่งต่อบรรทัด
    • sortเส้นของ
  • เรียกdiffใช้-qเพื่อระงับเอาต์พุต diff เต็มและ-Bwละเว้นการเปลี่ยนแปลงช่องว่าง


2

Mathematica, 77 76 ไบต์

StringMatchQ[##,IgnoreCase->1>0]&@@(""<>Sort[Characters@#/." "->""]&/@{##})&

ส่วนแรกเป็นหนึ่งในคำตอบของฉันสำหรับคำถามอื่น!


2

Pike, 54 112 109 109 96 ไบต์

#define a(x) sort((array)replace(lower_case(x)," ",""))
int s(mixed i){return a(i[0])==a(i[1]);}

mixedarray(string)เกิดขึ้นจะสั้นกว่า

sส่งคืน1ถ้าอาร์กิวเมนต์เป็น anagrams


2

Q, 25 ไบต์

f:{~/{x@<x:x@&~^x:_x}'x}

NOTE.- การนับรวมถึงชื่อฟังก์ชั่น f: เพื่อความสะดวกในการทดสอบ (แลมบ์ดาเราสามารถลดค่าได้ 2 ไบต์)

เวอร์ชันที่อ่านได้

จับคู่กับ {จากน้อยไปหามากไม่น้อยกว่า x} แต่ละ x

{.. x ..} is an anonymous function with arg x
_x        lowers string x
&~^x      where not null x (space is considered null)
x@..      selects elements of x according to indexes .. 
<x        ascending indexes of x (not values). Ex <"cab" is 1 2 0
x@<x      ascending values of x (x at ascending indexes of x)
~         match (diad function). Ex "one"~"one" is true
f'..      applies function f for each argument ..
f/..      applies function f over elements of sequence (fold)

ทดสอบ

f("Lynn";"Nyl N")                       
f("Digital Trauma";"Tau Digital Arm")   
f("Sp3000";"P S 3000")                  
f("Manage Trash So";"Those anagrams")   
f("Calvins Hobbies";"Helka Homba")      
f("Android";"rains odd")                
f("In between days";"bayed entwine")    
f("Code golf";"cod elf got")    

สร้าง (1b = จริง, 0b = เท็จ)

1b
1b
1b
1b
0b
0b
0b
0b

เกี่ยวกับ Q

ภาษาที่ใช้งานทั่วไป (อนุพันธ์ APL, เชี่ยวชาญในการประมวลผลข้อมูล) พัฒนาโดย kx.com รุ่นประเมินผลการทำงานเต็มฟรีสำหรับ Windows / Linux / MacOS


คุณหมายถึงอะไรภาษาอื่นไม่จริงจัง :-P
Luis Mendo

หากfจำเป็นต้องใช้รหัสเพื่อประเมินผลอย่างถูกต้องจะต้องนับรหัสนั้น มิฉะนั้นเพียงแค่ปล่อยให้มันอยู่นอกรหัสส่งของคุณและใช้ในตัวอย่างเท่านั้นเพื่อแสดงวิธีการกำหนดฟังก์ชั่น
Mego

แน่นอนว่าภาษาอื่นมีความร้ายแรงเท่ากับ Q. ฉันขอร้องภาษาอังกฤษไม่ดี แต่บางภาษาจะเสียสละความสามารถในการอ่านหรือติดตั้งไลบรารีสำหรับการแข่งขันประเภทนี้ Q คือ 'ภาษาที่ใช้งานทั่วไป' แม้จะมีความจริงที่ว่ารหัสนั้นไม่สามารถอ่านได้มาก
J. Sendra

คุณจำเป็นต้องกำหนด x หนึ่งครั้งหากคุณลดลงในภายหลังดังนั้นk)~/{x@<x:_x@&~^x}'สำหรับ 17 ไบต์ .. แต่ฉันบอกว่ามันเป็น 19 เพราะคุณต้องการk)วงเล็บเพราะนี่คือKรหัสแทนที่จะเป็นQ...
streetster

2

APL, 31 ตัวอักษร

{≡/{x[⍋x←('.'⎕R'\u0')⍵~' ']}¨⍵}

ที่จะใช้ดังนั้น:

    {≡/{x[⍋x←('.'⎕R'\u0')⍵~' ']}¨⍵}'Sp3000' 'P S 3000' 
1

เป็นภาษาอังกฤษ:

  • { ... }¨⍵: สำหรับแต่ละองค์ประกอบของการโต้แย้ง
  • x←('.'⎕R'\u0')⍵~' ': แปลงเป็นตัวพิมพ์ใหญ่ (โดยใช้ regex ... ) สตริงที่ไม่มีช่องว่างและกำหนดผลลัพธ์ชั่วคราวให้ x
  • x[⍋x]: จัดเรียง x
  • ≡/: เปรียบเทียบผลลัพธ์ทั้งสองของการเรียงลำดับ: หากตรงกันให้ส่งคืน 1

เป็นไปได้ไหมที่จะลองออนไลน์ ฉันลองด้วยตัวเองแต่ฉันไม่รู้จะใช้มันอย่างไร
Luis Mendo

แน่ใจ ที่นี่: คำนิยามหลังจากนั้นคุณสามารถพิมพ์ได้f 'first avatar' 'second avatar'
lstefano

ขอบคุณ! อาจเพิ่มเข้าไปในคำตอบ? เพื่อให้ผู้คนสามารถลอง
หลุยส์ Mendo

-9:≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨
อดัม

@ Adám: นั่นไม่ได้ผลเพราะ ≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨'pp' '00'ให้ 1
lstefano

2

Java, 218 ไบต์

ครั้งแรกที่ฉันเคยเขียน Java ...

แข็งแรงเล่นกอล์ฟ:

import java.util.Arrays;boolean M(String a,String b){char[]A=a.toUpperCase().replace(" ","").toCharArray();char[]B=b.toUpperCase().replace(" ","").toCharArray();Arrays.sort(A);Arrays.sort(B);return Arrays.equals(A,B);}

Ungolfed:

import java.util.Arrays;
public class ManageTrashSo {
    public boolean M(String a, String b) {
    char[] A = a.toUpperCase().replace(" ", "").toCharArray();
    char[] B = b.toUpperCase().replace(" ", "").toCharArray();
    Arrays.sort(A);
    Arrays.sort(B);
    return Arrays.equals(A, B);
   }
}

การทดสอบ:

    ManageTrashSo manageTrashSo = new ManageTrashSo();

    //True
    System.out.println(manageTrashSo.M("Lynn", "Nyl N"));
    System.out.println(manageTrashSo.M("Digital Trauma", "Tau Digital Arm"));

    //False
    System.out.println(manageTrashSo.M("Android", "rains odd"));
    System.out.println(manageTrashSo.M("In between days", "bayed entwine"));

ฉันรู้ว่ามันเกือบปีแล้ว แต่คุณสามารถตีกอล์ฟได้ 32 ไบต์เช่นนี้: boolean f(String...a){java.util.Arrays x=null;String[]A=g(a[0]),B=g(a[1]);x.sort(A);x.sort(B);return x.equals(A,B);}String[]g(String a){return a.replace(" ","").toUpperCase().split("");}( 186 ไบต์ ) หรือถ้าคุณแปลงเป็นแลมบ์ดาของ Java 8 ก็สามารถเป็นได้: a->b->{java.util.Arrays x=null;String[]A=g(a),B=g(b);x.sort(A);x.sort(B);return x.equals(A,B);};String[]g(String a){return a.replace(" ","").toUpperCase().split("");}( 167 ไบต์ ) นี่คือ TIO พร้อมรหัสทดสอบ
Kevin Cruijssen



1

PowerShell, 81 ไบต์

param([char[]]$a,[char[]]$b)-join($a-replace' '|sort)-eq-join($b-replace' '|sort)

เขียนคำตอบของฉันเล็กน้อยเกี่ยวกับการท้าทายแอนนาแกรมที่เชื่อมโยง

รับอินพุตเป็น char-arrays ทำการดำเนิน-replaceการเพื่อลบช่องว่างsort(ซึ่งเรียงลำดับตามตัวอักษรไม่ใช่ตามค่า ASCII) จากนั้น-joinป้อนกลับเข้าไปในสตริง -eqใน PowerShell โดยกรณีตายเริ่มต้น แต่ที่นี่จะต้องมีการดำเนินการในสายเช่น[char]'a'ไม่เท่ากับเพราะฉะนั้นเหตุผลที่[char]'A'-join


1

Perl, 35 ไบต์

รวม +1 สำหรับ -p

ค่อนข้างไม่เหมาะสมเนื่องจากขึ้นอยู่กับโปรแกรมที่ได้รับจาก commandline

perl -pe'<>=~s%\S%*_=s/$&//i?_:0%reg;$_=!//'

จากนั้นให้สตริงเป็น 2 บรรทัดต่อเนื่องกันบน STDIN

ทางออกที่ไม่เหมาะสมมากคือ 30 ไบต์:

perl -ne'<>=~s%\w%1/!s/$&//i%reg;1/!//'

สิ่งนี้จะล้มเหลวหากสตริงไม่ใช่แอนนาแกรมและดังนั้นจึงให้รหัสการออกที่ผิดพลาดจากมุมมองของเชลล์ นอกจากนี้ยังให้ขยะใน STDERR สำหรับกรณีนั้น หากสตริงเป็นแอนนาแกรมโปรแกรมจะเงียบและให้รหัสออก "จริง"



1

Excel VBA ขนาด 122 ไบต์

ไม่ระบุชื่อหน้าต่าง VBE ทันทีฟังก์ชันที่รับอินพุตจากช่วง[A1:B1]และเอาต์พุตไปยังหน้าต่างทันที VBE

a=Replace([A1]," ",""):b=Replace([B1]," ",""):For i=1To Len(a):b=Replace(b,Mid(a,i,1),"|",,1,1):Next:?b=String(len(a),"|")

0

C #, 378 ไบต์

ฉันต้องการแต้มต่อ !!

https://dotnetfiddle.net/FNDt0E

using System;
using System.Linq;
using System.Text;

public class Program
{

    public static void Main()
    {
        var l = "Hello World";

        var r = "Red Who Loll";

        var y = new Func<string,string>(s => new String(s.ToLower().Replace(" ","").OrderBy(v => v).ToArray()));
        var z = new Func<string,string,Func<string,string>,bool>((w,x,f) => f(w) == f(x));
        var o = z(l, r, y);


        Console.WriteLine("{0} & {1} are anagram: {2}",l, r, o);


                Console.WriteLine("C#, {0} bytes", Encoding.Unicode.GetByteCount(@"var y = new Func<string,string>(s => new String(s.ToLower().Replace("" "","""").OrderBy(v => v).ToArray()));
    var z = new Func<string,string,Func<string,string>,bool>((w,x,f) => f(w) == f(x));"));

    }

}

4
ยินดีต้อนรับสู่ Programming Puzzles & Code Golf! กฎทั่วไปคือการรวมภาษาของคุณเข้ากับจำนวนไบต์ในบรรทัดแรกของโพสต์ คุณสามารถทำได้โดยการเพิ่มผู้นำ#ในบรรทัดแรก นอกจากนี้สำหรับคำถามเกี่ยวกับการตีกอล์ฟคุณจำเป็นต้องตีโปรแกรมของคุณ สำหรับการเริ่มต้นคุณควรลบช่องว่างที่ไม่จำเป็นและใช้ชื่อตัวแปรอักขระเดี่ยว นอกจากนี้คุณยังสามารถใช้ฟังก์ชั่นแทนโปรแกรมเต็มรูปแบบ (เว้นแต่จะถูกห้ามอย่างชัดเจน) เพื่อบันทึกไบต์เพิ่มเติม
Denker

@Denker ขอให้คุณ ninja'd me :)
แมว

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