var QUESTION_ID=92598,OVERRIDE_USER=20260;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/92598/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, 32 byte
Fungsi lambda anonim. Diberikan bilangan bulat x menulis "- ~" abs (x) kali dan menghapus karakter pertama jika x negatif, maka nol ditambahkan ke akhir.
sumber
n
di tempatx
dan'
di tempat"
:)JavaScript (ES6),
3331 byteRekursi <built-in <loop (setidaknya dalam kasus ini). Pada dasarnya tidak mengevaluasi input:
~
ke string;-
ke string;Mengambil keuntungan dari pola ini:
sumber
Pyth,
141312 Bytes-2 Bytes berkat @StevenH.
test suite
Memutuskan untuk mencoba Pyth, jadi saya menerjemahkan jawaban python saya untuk itu. Selamat datang bantuan!
Penjelasan:
sumber
>0
alih-alih<Q0
tW>0Q_+0sm"~-
_<>0Q+0sm"~-
Saya harap Anda baik-baik saja dengan saya menambahkan ini ke solusi saya.C, 46 byte
Tidak seperti kebanyakan (semua?) Jawaban lain, yang satu ini mengeluarkan operator
~
dan-
satu per satu.sumber
05AB1E ,
1413 bytePenjelasan
Cobalah online!
sumber
Retina,
1917 byteGanti nomor dengan unary, dengan nol di ujungnya. Ganti masing
1
- masing dengan-~
. Hapus negatif ganda jika ada.Cobalah online
Semua kasus uji sekaligus (program sedikit dimodifikasi untuk mendukung beberapa kasus uji)
sumber
Perl
38 35 33(23 +1 untuk -p) 24-13 terima kasih kepada Dada
sumber
-p
bukannya-r
. Anda juga dapat menyingkirkan tanda kurung terakhir dan titik koma:if$h<0
sudah cukup.$h<0&&s;.;
alih - alihs/.// if $h<0
. (-p
Menambahkan;
pada akhir kode, sehingga tidak perlu untuk yang terakhir;
daris;.;;
Dan.a if b
Kira-kira setara denganb && a
, tetapi dalam kasus ini menghemat satu byte karena Anda dapat menghapus ruang);
juga.Dyalog APL , 18 byte
'0',⍨
karakter nol ditambahkan ke0∘>
negativeness (yaitu 1 untuk angka di bawah 0; 0 untuk nol dan ke atas)↓
dijatuhkan dari'-~'⍴⍨
string "~ -" membentuk ulang secara siklis menjadi panjang2×
dua kali|
nilai absolut+
plus0∘<
kepositifan (yaitu 1 untuk angka lebih dari 0)TryAPL online!
sumber
Haskell, 41 byte
f n=['-'|n>0]++(tail$[1..abs n]>>"-~")++"0"
Terima kasih kepada nimi selama 3 byte
sumber
tail
gagal untukn=0
. Anda bisa menggunakannyadrop 1
.f n|n<0=tail.f$abs n|x<-[1..n]>>"-~"=x++"0"
....|n<0=tail$f(-n)|...
.V , 21 byte
Cobalah online!
V memiliki dukungan angka yang sangat terbatas, dan sebenarnya tidak memiliki konsep angka negatif. Ini berarti untuk mendukung negatif (atau bahkan 0), kita harus menggunakan beberapa solusi hacky.
Penjelasan:
sumber
JavaScript (ES6),
3937 byteDisimpan 2 byte berkat @Neil
sumber
Jelly , 10 byte
Ini adalah program lengkap. Cobalah online!
Bagaimana itu bekerja
sumber
Java 7,
9579 byte79 byte:
Tidak Disatukan:
Versi lama (95 byte):Pemakaian:
Coba di sini!
Keluaran:
sumber
Ruby, 34 byte
sumber
EXCEL:
5533 byteInput dalam bentuk menempatkan nomor di sel A1. Formula bisa kemana saja kecuali A1.
sumber
T-SQL, 87 byte
The
x*x+1
kondisi substring cukup, karenax^2+1>=2*abs(x)
untuk semuax
.Seperti biasanya dalam SQL, input disimpan dalam tabel:
sumber
CJam ,
1814 byteMengambil beberapa inspirasi dari jawaban Emigna untuk menghemat 4 byte.
Cobalah online! (Sebagai rangkaian uji yang dipisahkan dengan linefeed.)
Penjelasan
sumber
Vim - 31 penekanan tombol
Golf vim pertama, prolly melewatkan banyak hal.
sumber
:s/^-
alih - alih:s/-\~/\~-
danD
bukannyad$
<C-a>
dan kemudian menghapus dua karakter pada akhirnya.0i
tidak berhasil?0
memindahkan kursor ke karakter pertama pada baris saat ini. Anda dapat mengurutkan menggunakan 0 sebagai hitungan dalam V sekalipun.Matlab, 61 byte
sumber
Pyke,
1413 byteCoba di sini!
sumber
Perl 6 , 25 byte
Penjelasan:
sumber
Jelly,
1412 byte-2 byte terima kasih kepada @Dennis (kembalikan 0 daripada menyatukan "0", menjadikan ini program penuh saja.)
Uji di TryItOnline
Bagaimana?
sumber
> <>, 18 + 3 = 22 byte
Cobalah online! +3 byte untuk
-v
flag untuk menginisialisasi stack dengan input. Jika menganggap bahwa STDIN kosong tidak apa-apa, maka yang berikut ini adalah byte yang lebih pendek:Program terus membalikkan input
n
seperlunya hingga mencapai 0, setelah itu kesalahan keluar.sumber
Oktaf, 51 byte
Pada awalnya secara terang-terangan menyalin pendekatan Matlab oleh @pajonk dan kemudian memodifikasi beberapa detail, menulis ulang sebagai "produk luar" antara vektor yang dan karakter "- ~" dan menyalahgunakan pengindeksan saat terbang (atau apa yang bisa menjadi disebut) memungkinkan kita menyimpan beberapa byte. Masih sedikit menyakitkan saya bahwa saya tidak bisa mendapatkan ekspresi indeks untuk mengambil lebih sedikit byte.
Oktaf memungkinkan (i1) (i2) atau bahkan (...) (i1) (i2) untuk pengindeksan di mana Matlab ingin kita menyimpan variabel di antara pengindeksan.
terlalu panjang untuk menggambarkan "lewati dulu jika". Pasti ada cara yang lebih baik.
sumber
PseudoD ,
688579521 byteMenjelaskan:
sumber
adquirir e``fijar p a Escribir
)?PHP, 61 byte
sumber
PHP, 58 byte
sumber
Labirin , 25 byte
Cobalah online!
Penjelasan
Saya sangat suka aliran kontrol yang satu ini. IP berjalan dalam angka 8 (atau sebenarnya ∞, saya kira) melalui kode untuk mengurangi input secara perlahan
0
saat mencetak karakter yang sesuai.Kode dimulai di sudut kiri atas ke kanan. Mereka
`
tidak melakukan apa-apa sekarang.?
membaca input dan+
menambahkannya ke nol implisit di bawah ini. Tentu saja itu tidak melakukan apa-apa juga, tetapi ketika kita menjalankan kode ini lagi,?
akan mendorong nol (karena kita berada di EOF), dan+
kemudian akan menghilangkan nol itu.Selanjutnya
#
dorongan kedalaman tumpukan, hanya untuk memastikan bahwa ada nilai positif pada tumpukan untuk membuat IP berbelok ke selatan, dan;
membuangnya lagi.Ini
"
adalah no-op dan bertindak sebagai cabang utama dari kode. Ada tiga kasus untuk dibedakan:Jika nilai saat ini positif, IP berbelok ke kanan (barat) dan menyelesaikan satu putaran dari loop kiri:
Jika nilai saat ini negatif, IP belok kiri (timur) dan kode berikut dijalankan:
Perhatikan bahwa keduanya akan bergantian (karena keduanya mengubah tanda input) hingga nilai input dikurangi menjadi nol. Pada saat itu ...
!
dan kemudian berbelok ke barat ke@
.!
mencetak0
dan@
mengakhiri program.sumber
GolfScript ,
302420 byte~."-~"\abs*\0<{(;}*0
Memasukkan:
-5
Keluaran:
-5 = ~-~-~-~-~0
Penjelasan
Cobalah online!
sumber
2 =
, cukup-~-~0
.{(;}*0
bukan{(;}{}if 0
.