var QUESTION_ID=77608,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/77608/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Jawaban:
Python 3,
383433 byteIni mengharapkan daftar digit atau string tunggal sebagai argumen. Uji di Ideone .
Berkat @xsot untuk bermain golf 4 byte!
Berkat @immibis untuk bermain golf 1 byte!
sumber
lambda s:s==sorted(s,key=`s`.find)
s.find
?s
harus menjadi daftar string singleton (atau saya harus memberikans
daftar untuk perbandingan), danlist.find
tidak didefinisikan ...s.index
begitu? Tampaknya bekerja untuk saya.JavaScript (ES6), 27 byte
Gunakan lookahead negatif untuk mencari dua digit yang tidak bersebelahan. Jika setidaknya ada dua digit, maka mereka dapat dipilih sehingga digit pertama mendahului digit yang berbeda.
sumber
05AB1E , 4 byte
Kode:
Penjelasan:
Menggunakan pengodean CP-1252 .
Cobalah online!
sumber
Jelly , 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Pyth,
65 byte1 byte berkat FryAmTheEggman
Terinspirasi oleh solusi Python di sini .
Suite uji
Penjelasan:
sumber
SIxLQ
sepertinya berhasil.Q
tampaknya tidak diuraikan dengan benar, itu bertukar urutan argumen atau sesuatu sehingga Anda mendapatkan semua0
dan itu selalu memberi benar. Ini suite tes.R,
6648464338 byteIni adalah fungsi yang menerima input sebagai vektor digit dan mengembalikan boolean. Untuk menyebutnya, tetapkan ke variabel.
Bukan yang terpendek tapi saya pikir itu pendekatan yang menyenangkan. Kami menjalankan panjang encode input dan mengekstrak nilai. Jika daftar nilai berisi duplikat kemudian kembali
FALSE
, jika tidak kembaliTRUE
.Verifikasi semua kasus uji online
Disimpan 20 byte berkat MickyT, 3 berkat Albert Masclans, dan 5 berkat mnel!
sumber
MATL , 8 byte
Outputnya adalah array yang hanya berisi yang benar, atau array yang mengandung setidaknya satu nol untuk falsey.
Cobalah online!
Penjelasan
Pertimbangkan input
22331
yang memenuhi syarat. Menguji apakah masing-masing karakter sama satu sama lain memberikan array 2DHasil akhir harus benar jika baris array itu (dianggap sebagai atom) berada dalam urutan (leksikografis) menurun . Sebagai perbandingan, input
22321
memberikan arraydi mana baris tidak diurutkan.
sumber
Retina , 17 byte
Cobalah online! (Sedikit dimodifikasi untuk menjalankan semua test case sekaligus.)
Pertama pertandingan regex digit yang sedang dipisahkan oleh angka lainnya, jadi kami mendapatkan
0
masukan yang valid dan mana saja antara1
dan9
input tidak valid (karena keserakahan dari para.+
, kita tidak bisa mendapatkan lebih darin-1
pertandingan untukn
berbeda digit).Untuk membalikkan kebenaran hasil, kami menghitung jumlah
0
s, yang1
untuk input yang valid dan yang0
tidak valid.sumber
A`(.)(?!\1).+\1
selama 15 byte. Juga berfungsi untuk banyak input. Kebenaran adalah input, kepalsuan bukanlah apa-apa. Seseorang tidak hanya bermain golf dengan Martin dalam bahasanya sendiri. :)Java,
161156 byteKarena Jawa ...
Tanpa malu-malu
mencurimeminjam regex dari jawaban ini karena saya mulai mencoba melakukan ini dengan array dan manipulasi matematika, tetapi itu menjadi sangat rumit, dan regex adalah alat yang bagus untuk masalah ini.Tidak Disatukan:
Ditata seperti orang Jawa yang masuk akal:
sumber
like a sensible Java person
Itu tidak akan pernah menggunakan Java.s->s.match("(.)(?!\\1).*\\1")
Pyth, 7 byte
Test Suite .
sumber
Ruby, 23 byte
Fungsi anonim. Menerima string. Regex strat.
Regex breakdown
!~
berarti jika tidak ada kecocokan regex dalam string, kembalitrue
, dan sebaliknya kembalifalse
.sumber
Mathematica, 26 byte
sumber
MATL,
1311 byteTerima kasih kepada Luis Mendo karena telah menghemat dua byte!
Cobalah secara Online!
Penjelasan
sumber
j
. Juga, saya pikir Anda dapat bergerakvA
dalam lingkaran dan menghapus]
Y&
di dalam tetapi itu tidak berhasil karenafd2<
bisa kosong. Bergerak kevA
dalam sangat bagus! Saya juga sangat berharap kami memiliki stabilunique
yang tidak memakan banyak byte.u
stabil secara default (Anda selalu bisa memasukkanS
setelahnya, dua byte). Apa yang kamu pikirkan?Haskell, 44 byte
Contoh penggunaan:
((==)<*>nub).map head.group $ "44999911"
->True
.Versi non-pointfree:
sumber
J, 8 byte
Mengujinya dengan J.js .
Bagaimana itu bekerja
sumber
:]
:i
:-1
Python,
5655 bytesumber
int not subscriptable
)~
(yang secara harfiah setara dengan1-
):a=lambda s:~(s[0]in s.lstrip(s[0]))&a(s[1:])if s else 1
C #, 119 byte
Tidak disatukan
sumber
Julia, 35 byte
Untuk alasan apa pun,
sort
tidak mengambil string, tetapiissorted
tidak ...sumber
issorted
bekerja, tetapisort
tidak.sorted
mengubah argumennya menjadi daftar yang dapat diubah terlebih dahulu - itu sebabnyasorted(string)
mengembalikan daftar stringFaktor, 22 byte
Lakukan apa yang tertulis di kaleng. Sebagai fungsi anonimouse, Anda harus
call
ini, atau membuatnya: word ;
.sumber
Lua,
1079485 Bytes13 byte disimpan berkat @LeakyNun
Setidaknya, ini mengalahkan Java: D. Lua payah memanipulasi string, tapi saya pikir cukup bagus :).
Dibutuhkan inputnya sebagai argumen baris perintah,
dan outputSekarang output menggunakan kode keluarnya. Keluar kode 0 untuk jujur, dan 1 untuk palsu1
untuk kasus-kasus kebenaran danfalse
untuk yang palsu.Tidak disatukan
Hati-hati, ada dua variabel ajaib yang disebut
...
, yang pertama berisi argumen dari program, yang kedua adalah lokal ke fungsi anonim dan berisi parameternyasumber
os.exit()
dengani=#0
...JavaScript ES6,
7169 byteAtau, yang setara:
Golf sedang berlangsung.
Verifikasi kasus uji
sumber
C # 111 byte
strategi lama 131 byte
golf pertama saya pikir saya lakukan ok
sumber
C,
747371 byteDicukur
salah satutiga byte berkat @xsot!sumber
a[99]
Saya suka autovivifikasi Perl! Oh, tunggu ...a[99],c,m;main(d){for(;~c;m|=a[d=c]+=c!=d)c=getchar();putchar(48+1/m);}
!--m
dengan1/m
. Tentanga[d=c]+=c!=d
, saya mencobanya dengan gcc dan tidak berfungsi di komputer saya karena urutan evaluasi. Kita harus menemukan kompiler yang akan dimainkan.a[99],c,m;main(d){for(;~c;m|=c^d&&a[d=c]++)c=getchar();putchar(48+!m);}
Haskell, 37 byte
Menggunakan pendekatan yang sama dengan jawaban MATL Luis Mendo : membuat vektor untuk setiap entri yang indeksnya sama, dan memeriksa bahwa hasilnya diurutkan dalam urutan menurun.
(<$>l).(==)<$>l
adalah versi lebih pendek dari[map(==a)l|a<-l]
. Fungsi(<$>l).(==)
yang diperlukana
untukmap(==a)l
dipetakanl
.scanl1 min
mengambil elemen terkecil kumulatifl
, yang sama dengan yang asli hanya jikal
diurutkan terbalik.(==)=<<
memeriksa apakah daftar tersebut memang invarian di bawah operasi ini.Strategi rekursif yang berbeda memberi 40 byte:
Ini memeriksa setiap akhiran untuk melihat apakah elemen pertama tidak muncul di sisanya, alasan kasus di mana dua elemen pertama sama sebagai bagian dari blok yang berdekatan.
sumber
Racket, 53 byte
Versi sederhana dan bodoh.
Tidak Disatukan:
Racket, 86 byte
Inilah versi yang menerapkan komentar @ xnor tentang cara yang lebih efisien untuk melakukan ini.
Tidak Disatukan:
Oke, ini mungkin sebenarnya hanya menggeser bobot perhitungan dari
sort
fungsi keregexp-replace
, tapi itu solusi yang menarik. Pada dasarnya, ini menghapus run karakter duplikat terlebih dahulu ( lihat di sini ), kemudian menguji apakah run-length yang tersisa dalam mode disortir.sumber
Perl 5, 20 byte
19, ditambah 1 untuk
-pe
bukan-e
.sumber
Bahasa Wolfram (Mathematica) , 18 byte
Cobalah online!
Gather
mengumpulkan daftar ke dalam sublist dari elemen identik, danSplit
membagi daftar menjadi sublist dari elemen identik berturut-turut. Mereka memberikan hasil yang sama jika dan hanya jika setiap nilai muncul hanya dalam satu blok yang berdekatan.sumber
Cembung, 17 byte
Cobalah online!
sumber
Japt , 9 byte
Cobalah
Penjelasan
sumber
APL (Dyalog) , 17 byte
Cobalah online!
sumber