Sudah menjadi tradisi di PPCG bahwa beberapa pengguna mengubah nama mereka untuk sementara waktu dengan anagram (nama baru yang dibentuk dengan menata ulang huruf-huruf lama).
Terkadang sulit untuk mencari tahu siapa itu siapa. Saya bisa menggunakan program atau fungsi untuk mengetahui apakah dua frasa adalah anagram satu sama lain.
Tantangan
Program atau fungsi harus mengambil dua string dan menghasilkan hasil yang benar jika mereka adalah anagram satu sama lain, dan sebaliknya palsu.
Aturan
- Input hanya akan berisi huruf (ASCII 65 hingga 90 dan 97 hingga 122), digit (ASCII 48 hingga 57) atau spasi (ASCII 32).
- Relasi anagram independen dari kasus. Jadi "Arm" dan "RAM" adalah anagram.
- Spasi juga tidak dihitung. Jadi "keyboard" dan "Barked Yo" adalah anagram
- Semua bawaan diizinkan
- Format input fleksibel (dua string, array dua string, string yang mengandung kedua frasa dengan pemisah yang sesuai ...)
Golf kode. Bytes paling sedikit menang.
Uji kasus
Benar:
Lynn, Nyl N
Digital Trauma, Tau Digital Arm
Sp3000, P S 3000
Manage Trash So, Those anagrams
Palsu
Calvins Hobbies, Helka Homba
Android, rains odd
In between days, bayed entwine
Code golf, cod elf got
code-golf
string
decision-problem
permutations
Luis Mendo
sumber
sumber
Manage Trash So, Those anagrams
. Bagus.So, the anagrams...
Jawaban:
05AB1E ,
98 byteKode:
Penjelasan:
Cobalah online!
sumber
lvyðK{}Q
sekarang.Retina, 25
Cobalah secara Online! Selain itu, Anda dapat menjalankan versi multisaluran yang dimodifikasi .
Hapus surat-surat dari sebelum koma bersama dengan korek api mereka setelah koma. Jika kita tidak punya surat lagi maka itu adalah anagram.
sumber
\w
sebagai tahap terakhir.\W
tidak akan berfungsi untuk kasus:Calvins Hobbies, Calvin's Hobbies
Pyth,
1110 byteTerima kasih kepada @FryAmTheEggman karena mengajari saya kekuatan
;
!Coba di sini!
Mengambil daftar dua string sebagai input.
Penjelasan
sumber
Python 2,
6361 byteFungsi anonim yang, pada kenyataannya, mengambil n argumen dan menentukan apakah semua n dari mereka adalah palindrom bersama!
f("Lynn", "Nyl N")
kembaliTrue
.Trik set pemahaman ini oleh xnor. Ini menghemat dua byte, tetapi pendekatan lama tampak sangat rapi:
sumber
`sorted(input().lower())`.strip(" [',")
memiliki panjang yang sama: /exec
hal yang pintar tetapi tampaknya terlalu rumit. Anda dapat melakukannya dengan lebih baiklambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2
.Jelly, 12 byte
Cobalah online!
Bagaimana itu bekerja
Versi alternatif, non-bersaing (9 byte)
Atom huruf besar Jelly memiliki bug, dan Jelly masih belum memiliki built-in untuk menguji daftar kesetaraan ...
Cobalah online!
Bagaimana itu bekerja
sumber
CJam, 11
1214byte3
2byte dihapus berkat @FryAmTheEggmanCobalah online!
sumber
lel
.lel
==>1e1
Tidak ada yang tahu. Ini sebuah misteri.Javascript,
69616059 byte1 byte off terima kasih @ ӍѲꝆΛҐӍΛПҒЦꝆ . Off 1 byte dengan currying ( ditunjukkan oleh @apsillers )
Tampilkan cuplikan kode
sumber
n=>m=>...
n=>m=>(G=s=>[]+s.toLowerCase().split(/\S/).sort())(n)==G(m)
. Menggunakan split alih-alih pertandingan harus menghemat satu byte.s='db cz'
... Sekarang menghasilkan ... dan menghasilkans.match(/\S/g)
.sort()
['b','c','d','z']
s.split(/\s/).sort()
['cz','db']
MATL , 11 byte
EDIT (20 Mei 2016) Kode dalam tautan menggunakan
Xz
alih-alihXv
, karena perubahan bahasa terbaru.Cobalah online!
sumber
Serius,
119 byteCobalah secara Online!
Semua orang tampaknya menggunakan algoritma yang sama. Ini dia lagi.
Sunting: penyortiran menyadari tidak berfungsi dengan benar pada string, dan mengurutkan spasi ke depan sehingga strip () akan bekerja.
sumber
C, 165 byte
Dapat dibaca dan dalam konteks kerja,
sumber
zsh, 85 byte
Input sebagai argumen baris perintah, output sebagai kode kembali.
The
for
sintaks membuat ini Bash-kompatibel.sumber
Japt, 12 byte
Uji secara online!
Bagaimana itu bekerja
sumber
GNU Sed, 33
Skor termasuk +2 untuk
-rn
opsi sed.Ini hampir merupakan port langsung dari jawaban Retina @ FryAmTheEggman :
Ideone.
sumber
Perl,
3433 + 1 = 34 byteMembutuhkan
-n
bendera dan gratis-M5.010
|-E
:Bagaimana itu bekerja:
Terima kasih kepada msh210 karena menyarankan menggunakan operator ternary untuk menghemat satu byte
sumber
Baloch Gyr , 9 byte
Cobalah online!
Keluaran yang benar / salah dicapai melalui keberhasilan / kegagalan predikat, ini adalah Brachylog.
Sebelumnya disimpan byte menggunakan
cṇ₁cḷḍ
bukan{ṇ₁cḷ}ᵐ
dengan asumsi bahwa dua string input akan menjadi panjang yang sama dikurangi spasi kosong, tapi saya menyadari bahwa itu akan berhasil di mana ia harus gagalAh Hass, haha
.sumber
PHP,
10994 byteBlech, keduanya
function/return
membunuhku di sini.Mengembalikan perbedaan antara dua
string
input sebagaiarray
karakter. PHP menganggap[]
falsy, memenuhireturn
persyaratan.sumber
function($x,$y){$S=str_split;return array_diff($S(trim($x)),$S(trim($y)));}
-> 75 byte. Membuat fungsi anonim yang mengembalikan hasilnya. Saya telah menghapus fungsi panjang itu dan mengganti panggilanstr_split
dengan variabel yang ditugaskan, untuk mempersingkatnya.Utilitas Bash + GNU, 51
f()
yang:${@^^}
mengubah semua parameter menjadi huruf besarfold -1
membagi karakter - satu per barissort
garisdiff
dengan-q
untuk menekan output diff penuh dan-Bw
mengabaikan perubahan spasi putihsumber
Pyke (komit 30, tidak kompetitif), 9 byte
Penjelasan:
sumber
Mathematica,
7776 byteBagian pertama sebenarnya adalah salah satu jawaban saya untuk pertanyaan lain!
sumber
Pike,
5411210910996 bytemixed
kebetulan lebih pendek dariarray(string)
.s
kembali1
jika argumennya adalah anagram.sumber
Q, 25 Bytes
CATATAN.- penghitungan termasuk nama fungsi f: untuk memudahkan pengujian (seperti lambda kita dapat mengurangi 2 Bytes)
Versi yang mudah dibaca
cocokkan dengan {naik bukan nol lebih rendah x} setiap x
Uji
menghasilkan (1b = benar, 0b = salah)
Tentang Q
Bahasa tujuan umum (APL turunan, khusus dalam pemrosesan data) dikembangkan oleh kx.com. Versi evaluasi fungsional lengkap gratis untuk Windows / Linux / MacOS.
sumber
f
diperlukan untuk kode untuk mengevaluasi dengan benar, maka itu harus dihitung. Jika tidak, tinggalkan saja kode kiriman Anda, dan gunakan saja dalam contoh untuk menunjukkan cara menetapkan fungsi.k)~/{x@<x:_x@&~^x}'
untuk 17 byte .. tapi saya katakan itu 19 karena Anda memerlukank)
braket karena ini adalahK
kode daripadaQ
...APL, 31 karakter
Untuk digunakan demikian:
Dalam Bahasa Inggris:
{ ... }¨⍵
: untuk masing-masing dari dua elemen argumenx←('.'⎕R'\u0')⍵~' '
: mentransformasikan ke huruf besar (menggunakan regex ...) string tanpa spasi dan menetapkan hasil sementara untukx
x[⍋x]
: sort x≡/
: bandingkan dua hasil penyortiran: jika cocok, kembalikan 1.sumber
f 'first avatar' 'second avatar'
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨
≡/{x[⍋x←0~⍨32|⎕UCS⍵]}¨'pp' '00'
memberi 1.Java, 218 Bytes
Pertama kali saya pernah menulis Java ...
Golf:
Tidak Disatukan:
Pengujian:
sumber
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 byte ) Atau jika Anda mengubahnya menjadi lambda Java 8, bisa jadi: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 byte ). Berikut ini adalah TIO dengan kode uji.Japt , 10 byte
Cobalah
sumber
Ruby, 50 byte
Menulis
f=->{...}
danf[]==f[]
panjang. :(sumber
PowerShell, 81 byte
Menulis ulang sedikit jawaban saya pada tantangan Anagram yang ditautkan.
Mengambil input sebagai array-ar, melakukan
-replace
operasi untuk menghapus spasi,sort
s mereka (yang mengurutkan menurut abjad, bukan dengan nilai ASCII), lalu-join
s kembali ke string. Dalam-eq
PowerShell secara default case-insensitive, tetapi di sini harus dilakukan pada string, karena[char]'a'
tidak sama dengan[char]'A'
, maka alasannya-join
.sumber
Perl, 35 byte
Sertakan +1 untuk
-p
Agak kasar karena tergantung pada program yang diberikan pada commandline.
Kemudian berikan string sebagai 2 baris berturut-turut pada STDIN
Solusi yang sangat kasar adalah 30 byte:
Ini macet jika string bukan anagram dan karena itu memberikan kode keluar palsu dari sudut pandang shell. Ini juga memberi sampah pada STDERR untuk kasus itu. Jika string adalah anagram, program tidak bersuara dan memberikan kode keluar "benar"
sumber
PHP , 89 byte
Cobalah online!
PHP , 94 byte
Cobalah online!
sumber
Excel VBA, 122 Bytes
Jendela langsung VBE anonim Fungsi yang mengambil input dari rentang
[A1:B1]
dan keluaran ke jendela langsung VBEsumber
C #, 378 byte
Saya butuh cacat !!
https://dotnetfiddle.net/FNDt0E
sumber
#
ke baris pertama. Juga untuk pertanyaan kode-golf diperlukan untuk golf program Anda. Sebagai permulaan, Anda harus menghapus spasi putih yang tidak perlu dan menggunakan nama variabel satu karakter. Anda juga selalu dapat menggunakan fungsi alih-alih program penuh (kecuali dilarang secara eksplisit) untuk menyimpan lebih banyak byte.