Huruf A tanpa A


69

Tugas Anda adalah menampilkan huruf "A" sendirian, tanpa apa pun, kecuali segala bentuk jejak baris baru jika Anda tidak dapat menghindarinya, melakukannya dalam program dan / atau cuplikan. Kode yang mengembalikan (alih-alih mencetak) diizinkan.

Versi huruf kecil dan besar dari huruf "A" dapat diterima (yaitu, unicode U + 0061 atau unicode U + 0041. Pengkodean karakter lain yang bukan Unicode diperbolehkan, tetapi bagaimanapun, output yang dihasilkan dari kode Anda harus menjadi huruf latin "A", dan bukan lookalikes atau homoglyphs)

Anda tidak boleh menggunakan karakter di bawah ini dalam kode Anda, terlepas dari pengkodean karakter yang Anda pilih:

  • " A ", baik huruf besar atau kecil.

  • " U ", apakah huruf kecil atau besar.

  • X , apakah huruf besar atau kecil.

  • +

  • &

  • #

  • 0

  • 1

  • 4

  • 5

  • 6

  • 7

  • 9

Kecurangan, celah, dll, tidak diizinkan.

Karena ini adalah , solusi terpendek, dalam byte, yang mengikuti semua aturan, adalah pemenangnya.


Pemeriksa Validitas

Cuplikan Stack ini memeriksa untuk memastikan kode Anda tidak menggunakan karakter yang dibatasi. Mungkin tidak berfungsi dengan benar untuk beberapa pengkodean karakter.

var t = prompt("Input your code.");

if (/[AaUuXx+&#0145679]/.test(t)) {
  alert("Contains a disallowed character!");
} else {
  alert("No disallowed characters");
}

Cuplikan Stack ini yang memastikan Anda tidak memiliki karakter yang dilarang juga tersedia di JSFiddle .

Papan peringkat


7
@ ColdGolf Anda tampaknya mengatakan "ya" untuk fungsi, tetapi fungsi tidak ditampilkan, mereka biasanya kembali.
xnor

2
Apakah diakhiri dengan variabel yang berisi ajuga cukup baik?
Ton Hospel

1
Itu bukanlah apa yang saya maksud. Kode yang seharusnya melakukan penugasan variabel tidak akan mengandung karakter terlarang. Saya hanya mencoba memahami apa yang dicakup oleh "tampilan dengan cara lain selain mencetak". Jika "kembali dari suatu fungsi" tidak apa-apa, bagaimana dengan "menetapkan ke variabel"?
Ton Hospel

1
Mengapa karakter khusus itu?
user253751

7
@ Imibis Auntuk alasan yang jelas. Uuntuk Unicode escape string ( \u0041is A), Xuntuk hex escape string ( \x41), +untuk Unicode ordinals ( U+0041), &untuk entitas HTML, #karena aku sebenarnya tidak tahu, 65adalah ordinal desimal A, 41adalah hex ordinal A, 97adalah ordinal desimal dari a, dan 0untuk beberapa alasan sebelumnya.
Mego

Jawaban:


86

Pluso, 1 byte

o

Halaman Pluso Esolangs .

Pluso berisi akumulator tunggal, yang dimulai dengan nilai 1. Ia menggunakan dua perintah, p yang menambah akumulator (mod 27), dan o yang mencetak nilai saat ini sebagai karakter ASCII huruf besar, AZ atau spasi (di mana 1-26 mewakili AZ masing-masing, dan 0 mewakili spasi).

Sebagai akumulator dimulai pada 1, perintah o tanpa terlebih dahulu p akan menampilkan A .


14
Selamat datang di PPCG! Saya akan merekomendasikan untuk memasukkan penjelasan dalam jawaban Anda, jika tautannya mati karena alasan apa pun.
TheBikingViking

Penjelasan ditambahkan. Menunggu persetujuan moderator.
KPM

2
Terima kasih atas rekomendasinya (dan selamat datang), saya telah memperbarui jawaban saya untuk menyertakan penjelasan singkat.
cdw

Saya baru saja memilih untuk menempatkan Anda di 666 rep. Maaf soal itu.
Aidan F. Pierce

5
Bukankah ini gagal dalam ujian "is an esolang" karena tidak dapat melakukan pemeriksaan primality?
Magic Octopus Mm

155

Python 2, 14 byte

print`3<3`[~3]

Ekspresi 3<3memberikan Boolean False, dan backticks memberikan representasi stringnya 'False'. Dari sini, tetap mengekstraksi surat itu a. Python diindeks 0, jadi apada indeks 1, yang merupakan karakter yang dilarang. Itu bisa dinyatakan sebagai 3-2, tetapi ada cara yang lebih pendek. Python memungkinkan pengindeksan dari belakang, dengan indeks -1untuk entri terakhir, -2untuk yang sebelumnya, dan seterusnya. Kami ingin indeks -4, tetapi 4juga nomor yang dilarang. Tapi, kita bisa mengekspresikannya ~3menggunakan bit-komplemen ~, yang memberi -n-1untuk ~n.


7
Itu solusi yang sangat keren. Juga, tidak bisa Anda lakukan [2]bukan [~3]?
DJMcMayhem

6
@DJMcMayhem Ini sayangnya 0-diindeks, itu akan perlu [1].
xnor

4
... mengapa 1dan 4nomor 'dilarang' ??
Chris Cirefice

4
Peraturan tantangan mengatakan demikian.
xnor

20
Saya sekarang bahkan mempertimbangkan untuk menggunakan "~ 0" dibaca sebagai "elemen pertama yang tidak diindeks dari belakang". Saya ingin tahu mengapa kita akan menggunakan notasi "-1" dengan Python ....
PascalVKooten

66

Pyth, 2 byte

hG

Uji di Kompiler Pyth .

Bagaimana itu bekerja

 G  Yield the lowercase alphabet.
h   Extract the first character.

48

PHP, 9 6 byte

<?=O^_^Q;

Untuk 9 byte: Terinspirasi oleh jawaban @Ton Hospel . Plus, itu memiliki manfaat tambahan terlihat sedikit seperti Kaomoji. :-)

Versi 6 byte yang ditingkatkan:

<?=~¾;

dimana ¾ memiliki kode hex 0xBE (penting untuk menyimpan file dalam pengodean Latin-1 , bukan UTF-8!).


Versi alternatifnya adalah f^E^b.
Ismael Miguel

Ya, solusi 9-byte berlimpah. Saya mulai dengan y ^ '8' dan x ^ '9', sayangnya angka harus dilemparkan ke string atau akan XOR tipe yang dihasilkan akan menjadi bilangan bulat.
YetiCGN

23
+1 untuk wajah^_^
Cyoce

Versi 6 Byte tidak dicetak A. Mencetak =A.
UTF-8

1
Saya tahu jawaban untuk teka-teki ini sekarang: Di UTF-8 codepoint "fraksi tiga perempat" dikodekan sebagai dua byte: 0xC2 0xBE , 0xBE sama dengan di ISO-8859-1 . Saya perhatikan bahwa ketika saya menyimpan ini ke file di kotak linux saya, yang saya akses melalui SSH dengan UTF-8, tentu saja, file tersebut adalah 7 byte . Jadi, simpan skrip dengan Latin-1 encoding dan itu akan menjadi 6 byte dan tidak menampilkan =karakter.
YetiCGN


32

brainfuck, 16 byte

-[-[---<]>>-]<-.

Ini didasarkan pada algoritma brainfuck Esolang untuk 159 .

Cobalah online!


3
Ini .... ini sihir.
Conor O'Brien

3
Solusi ini menggunakan sel pada indeks -1, yang tidak didukung di semua penerjemah brainfuck dan akan mengakibatkan kerusakan. Anda dapat menjalankannya di sini untuk melihat fatiherikli.github.io/brainfuck-visualizer/…
Cody

37
@Cody Pada PPCG, bahasa ditentukan oleh implementasinya. Selama ada satu penerjemah yang berperilaku seperti yang diinginkan, itu adalah solusi yang valid.
Dennis

3
Seberapa sulit bagi Anda untuk menghindari karakter terlarang?
Hagen von Eitzen

1
@HagenvonEitzen Saya harus menggali sedikit untuk menemukan algoritma yang bisa dihindari +. (cara terpendek untuk mencetak A adalah >+[+[<]>>+<+]>.), tetapi berkat daftar konstanta pada Esolang, tidak terlalu sulit.
Dennis

30

JavaScript (ES6), 17 16 14 byte

Disimpan dua byte berkat Neil!

_=>` ${-_}`[2]

Mengembalikan karakter kedua NaN, yaitu a.

Ini adalah yang terpendek yang bisa saya buat A, 43 42 byte:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Siapa bilang menjadi obfuscator tidak membantu dengan kode golf? Bukan saya!

Penjelasan

Yang pertama, secara mendalam.

_=>` ${-_}`[2]

-_adalah NaN, karena _tidak terdefinisi. Untuk mendapatkan ini sebagai string, kita perlu salah satu dari yang berikut ini:

-_+""
`${-_}`
(-_).toString()

Yang terakhir terlalu panjang, dan yang pertama digunakan +. Jadi kami menggunakan yang kedua. Sekarang, aada di indeks 1. Ini tidak ada gunanya, karena 1dilarang. Namun, sebagai string template, kita dapat menempatkan spasi di sana untuk membuatnya di indeks 2, sehingga meninggalkan kita ` ${-_}`.


Yang kedua, secara mendalam.

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Yang ini doozy.

_=>`                                `[-~8]

Ini adalah karakter ke-9 dari string templat di dalam, -~8sama dengan 9. Dalam hal ini, string templat ini hanya untuk stringifikasi. Ini adalah persamaan di dalam yang sedang dirubah, di antaranya ${...}:

[][`constr${`${!_}`[2]}ctor`]

Mari kita perluas sedikit ini:

(new Array())[`constr${`${!_}`[2]}ctor`]

Ini mendapatkan properti dari array kosong. Properti ini, tentu saja, string templat, tetapi memiliki beberapa teks di sekitarnya. Ini kira-kira setara dengan:`constr${${!""}[2]}ctor`

"constr" + `${!_}`[2] + "ctor"

Bagian dalam pada gilirannya setara dengan:

(!_).toString()[2]

!_adalah true(karena _adalah undefined, dan !undefined === true), dan stringified adalah "true". Kami mendapatkan karakter kedua itu, u; kita harus mendapatkannya dengan cara ini agar tidak secara eksplisit memasukkan ukode kita.

Jadi, bit bagian dalam ini setara dengan:

"constr" + "u" + "ctor" === "constructor"

Jadi kita mendapatkan konstruktor dari Array, Arrayfungsinya. Saya tidak bisa meletakkan ini secara eksplisit karena mengandung yang terlarang A. Sekarang, meringkas Arrayfungsi menghasilkan "function Array() { [native code] }".

Kembali ke kode asli:

_=>`${[][`constr${`${!_}`[2]}ctor`]}`[-~8]

Ini sama dengan, seperti yang telah kita lihat:

_=>Array.toString()[-~8]

Setara dengan:

_=>Array.toString()[9]

Akhirnya setara dengan:

_=>"A"

1
@ ColdGolf Tidak apa-apa.
Conor O'Brien

2
Apakah akan melanggar prinsip obfuscator untuk menambahkan penjelasan ...? Saya ingin tahu tentang cara kerjanya.
trichoplax

2
@trichoplax Saya kira tidak ada salahnya untuk mengungkapkan metode saya di sini;) Saya menambahkan penjelasan untuk keduanya.
Conor O'Brien

1
@ OldBunny2800 No. aadalah karakter terlarang, dan ada di toUpperCase.
Conor O'Brien

3
Saya pikir ini Perl pada awalnya.
Οurous

29

Hexagony , 4 byte

Ayyy lmao? Cukup golf untuk bahasa non-golf haha. Kode:

B(;@

Cobalah online!

Bentuk yang lebih mudah dibaca:

 B (
; @ .
 . .

Ini menempatkan nilai ASCII dari surat itu B, yaitu 66, di tepi memori saat ini. Ini mengurangkannya dengan satu menggunakan (dan mencetaknya dengan ;. Setelah itu, program diakhiri dengan menggunakan @.

Gambar jalur wajib:

masukkan deskripsi gambar di sini


8
"lebih mudah dibaca" + hexagony = ???
Bukan berarti Charles

18

Jelly , 3 byte

ØWḢ

Cobalah online!

Bagaimana itu bekerja

ØWḢ  Main link. No arguments.

ØW   Yield "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_".
  Ḣ  Head; extract the first character.

Jelly, 4 byte

l-ṾṂ

Cobalah online!

Bagaimana itu bekerja

l-ṾṂ  Main link. No arguments.

l-    Take the logarithm of 0 with base -1. Yields (nan+infj).
  Ṿ   Uneval; yield the string representation, i.e., "nanıinf".
   Ṃ  Take the minimum, returning 'a'.

1
Sayang sekali pendekatan kedua lebih panjang. ._.
Dennis

6
Terima kasih telah memasukkan pendekatan kedua. Sangat indah
trichoplax

18

Sebenarnya , 2 byte

úF

Cobalah online!

Penjelasan:

úF
ú   lowercase English alphabet
 F  first element

apakah kamu penulisnya? Saya belum pernah melihat bahasa ini sebelumnya.
loa_in_

Saya telah melihatnya muncul beberapa kali dalam tantangan sekarang. Saya pikir itu memiliki nama paling pintar dari bahasa golf di situs :-) Saya telah menonton Suits belakangan ini dan saya merasa sangat Harvey.
corsiKa

17

CJam, 3 byte

'@)

Cobalah online!

Bagaimana itu bekerja

'@   Push the character '@' on the stack.
  )  Increment its code point, yielding 'A'.

12

Bubblegum , 1 byte

"

atau

B

Semua orang sepertinya lupa bahwa itu ada ...


Belum pernah menggunakan Bubblegum sebelumnya, jadi mungkin alasan ketidaktahuan saya, tetapi di mana saya dapat menemukan dokumen untuk Bubblegum? Juga, saya mencoba bubblegum.tryitonline.net dengan kedua jawaban Anda, tetapi sepertinya tidak menghasilkan apa-apa.
Kevin Cruijssen

1
@KevinCruijssen Doc: esolangs.org/wiki/Bubblegum TIO tampaknya hanya menerima hexdump dari kode sumber, jadi cobalah seperti ini: bubblegum.tryitonline.net/…
jimmy23013

Ah, itu masalah saya; tidak menggunakan hexdump. Terima kasih dan +1 menjadi yang terpendek dengan jawaban satu byte (diikat dengan Pluso).
Kevin Cruijssen

@KevinCruijssen Ada jawaban Pluso 1 byte. Ini memiliki beberapa masalah dengan aturan situs yang aneh.
jimmy23013

10

Perl, 9 8 byte

xor masih diizinkan, tetapi saytidak. Jadi untuk 9 byte:

print$/^K

Namun menggunakan output ke STDERR memberikan 8 byte:

die~"\x9e\xf5"

Ganti \x9edan \xf5menurut versi literalnya. Atau buat file yang dapat dieksekusi menggunakan:

perl -e 'printf q(die~"%s"),~"a\n"' > a.pl

@ColdGolf: Itu tidak jelas bagi saya. Apakah maksud Anda, saya dapat menggunakan say(berisi a) untuk mencetak selama konstruksi argumen tidak menggunakan karakter terlarang?
Ton Hospel

"Namun, Anda tidak boleh menggunakan karakter di bawah ini dalam kode Anda: * A, baik huruf besar atau kecil." Dari itu, saya akan print "No using the letter with code point 65";.
haykam

@ColdGolf apakah itu dimaksudkan untuk menjawab pertanyaan dengan cara apa pun?
hobbs

10

> <> , 6 byte

'|;o-$

ini membuat serangkaian karakter, memantul dan membuatnya lagi secara terbalik, membalik 2 item tumpukan teratas dan mengurangi: '|' (124) minus ';' (59) adalah 'A' (65)

Cobalah online


2
Bagus! Saya mendapatkan '$-o;|yang hampir sama tetapi tanpa memantul. ( |;o-$'juga berfungsi.)
randomra

1
@randomra oh benar! itu pasti akan berjalan lebih cepat, pekerjaan yang sangat baik
torcado

10

Ruby, 15 12 byte

$><<to_s[-3]

1
Anda dapat menyimpan 2 byte, diubah $><<menjadi p , menjadikanp to_s[-3]
Ephi

@Ephi pmemanggil inspectargumennya, sehingga output akan dikutip, yang akan mendiskualifikasi itu.
Jordan

Saya melewatkan bagian dari tantangan itu, saya akan membiarkan komentar itu karena saya pikir ini adalah informasi yang menarik :)
Ephi

10

Java, 55 byte

void f(){System.err.write('c'-2);System.err.println();}

Karena kode harus mencetaknya, diperlukan salah satu dari dua penulis bawaan. System.outadalah, well, out, karena mengandung u. System.errbekerja, namun.

Rintangan selanjutnya adalah penanganan Java untuk chardan int. Karena itu tidak diizinkan untuk dilemparkan ke charkarena mengandung a, dan karena 'c' - 2dipromosikan int, mekanisme lain diperlukan. System.erradalah PrintWriter, yang memiliki write(char)metode tetapi tidak write(int). Menempatkan 'c' - 2di sana memaksanya chartanpa gips.

Akhirnya, setiap kali saya menjalankan program buffer System.errtidak akan menyiram seperti yang seharusnya, dan program tidak mencetak apa pun. Jadi saya harus menyiramnya secara manual. Namun, System.err.flush()tidak diperbolehkan, jadi saya menelepon println()yang secara implisit menyiram aliran yang mendasarinya.


9

MATL, 5 byte

YNVH)

Cobalah secara Online

Penjelasan

YN      % Creates a NaN value (not a number)
V       % Convert it to a string
H)      % Grab the second letter ('a')
        % Implicitly display the result

Jawaban asli saya adalah pendekatan lurus ke depan menggunakan literal lY2yang telah ditentukan yang menghasilkan 'A'...'Z'dan kemudian memilih elemen pertama 'A',.

lY2l)

9

Javascript, 18 byte 16 byte 12 byte 11 byte

` ${!2}`[2]

Berdasarkan dasar-dasar jsfuck yang dimodifikasi (harus mencari cara untuk mengganti +dengan -).

Tidak disatukan?

Yah, setidaknya versi dengan komentar (perhatikan bahwa versi ini mungkin tidak akan berjalan):

` ${      // whitespace to make "a" the third letter
  !2      // returns false
}`        // convert to string "false"
[2]       // index the third letter in " false" (note the whitespace)

Solusi lama:

`${![]}`[-(-!![])]

Anda dapat mengganti tanda kurung dengan spasi di antara tanda minus.
PurkkaKoodari

@ Pietu1998: Saya melihat bahwa 3diperbolehkan sehingga diganti semuanya dengan membosankan tua 3-2untuk mendapatkan1
slebetman

Disimpan satu byte berkat jawaban Conor O'Brien
slebetman

1
Eh, jangan tersinggung, tapi ini jawaban saya. Kecuali Anda menggunakan false, bukan NaN dan tidak menggunakan fungsi.
Conor O'Brien

8

Vim, 16 13 11 10 penekanan tombol

Terima kasih kepada H Walters karena menyimpan dua kunci

Terima kasih kepada DJMcMayhem karena telah menyelamatkan yang lain!

:h%<cr>jvyZZp
:h%<cr> #open help for percent
jvy     #move down one char (to the letter "a"), visual mode the character, yank
ZZ      #exit help for percent
p       #put yanked character

Pendekatan yang sangat bagus!
YetiCGN

2
Simpan 3 byte; alih-alih :h<cr>, coba :h%<cr>. Itu satu karakter tambahan, tetapi Anda mendapatkan bantuan untuk %, dengan kursor tepat di atas a. Jadi dari sini Anda bisa menggantinya 33lldengan j.
H Walters

Permintaan maaf untuk kesalahan ketik yang jelas (simpan 2 byte)
H Walters

Anda dapat menggunakan ZZalih-alih :q<cr>menyimpan yang lain.
DJMcMayhem

8

R, 27 12 byte

EDIT: Versi baru, dari ide bagus dari @Jarko Dubbeldam

LETTERS[T*T]

Tantangan yang cukup lucu!

Pada dasarnya, ini mengambil 26thelemen dari vektor terbalik yang berisi huruf besar ( LETTERS, yang merupakan vektor bawaan R )

Versi sebelumnya s (jumlah byte yang sama) :

L=LETTERS;rev(L)[length(L)]
rev((L=LETTERS))[length(L)]

1
Sedikit terlambat, tetapi Anda dapat menyimpan sedikit dengan LETTERS[T*T]. Tmengevaluasi 1ketika melakukan operasi numerik.
JAD


Secara teknis ini bukan solusi --- ia mencetak '[1] "a"', bukan hanya 'a'
JDL

8

> <> , 7 4 byte

Disimpan 3 byte berkat Teal pelican

"-o.

Cobalah online!

Penjelasan

"-o."   # pushes the string "-o."
-       # subtracts the charcode of o from the charcode of . (dot), 111-46=65
o       # prints as character
.       # tries to pop 2 coordinates to jump to, but as nothing is left on the stack
        # the program ends in an error

Saya akan melakukannya"B"1-o;
DanTheMan

@DanTheMan Itu seharusnya menjadi solusi yang lebih jelas. Saya heran mengapa saya tidak memikirkan hal itu: P
Emigna

@DanTheMan: - Berangkat dari apa yang diposting Dan Anda dapat mengurangi ini lebih jauh ke; "1-o; B atau bahkan lebih baik" + o; & karena keduanya diizinkan membuat ini 5 byte :) - Anda bahkan dapat membuatnya 4 byte dengan kesalahan; "-o.
Pelican Teal

@Tealpelican: Itu brilian! Menggunakan string sering kali merupakan tantangan tersingkat seperti ini, tetapi saya bahkan tidak mempertimbangkannya :)
Emigna

Setelah saya melihat komentar Dan itu mengingatkan saya pada tantangan yang lebih tua seperti ini sehingga hanya menggunakan konsep yang sama :)
Teal pelican

7

Vim, 2 penekanan tombol

vim -u NONEkemudian jalankan yang berikut ( -u NONEmatikan kustomisasi)

i<up>

Ketika vim dijalankan dalam mode yang kompatibel, tombol panah tidak dapat diartikan dengan benar. <up>ditafsirkan <esc>OAyang meninggalkan yang berikut ini dalam mode sisipkan. Yang akan pergi (dengan beberapa baris baru)

A

imulai memasukkan mode.
<up>keluar dari mode insert, buka baris di atas dan masukkan A ke buffer

Contoh orang menghadapi ini di alam liar. https://stackoverflow.com/questions/6987317/while-moving-the-cursor-across-a-vim-process-open-in-a-tmux-session-every-now-a/6988748#6988748


Saya tertawa ketika saya membacanya. Ini pekerjaan bagus. Senjata besar untuk sesuatu yang saya tahu, tetapi tidak akan terpikirkan.
udioica

6

Brainfuck, 192 19 byte

----[>---<----]>--.

Terima kasih kepada @NinjaBearMonkey untuk membantu saya menghemat hella byte

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------------------------.

Saya tidak pandai Brainfuck jadi saya yakin ada solusi yang lebih pendek, tetapi ia bekerja dengan mengurangi di bawah 0, menggulirkan byte, dan terus berjalan sampai turun ke 'A', lalu dicetak.


1
bukan pesaing serius. Jika Anda benar-benar menurunkannya, downvoter mungkin membalikkan suara mereka
Destructible Lemon

Bukankah akan jauh lebih pendek untuk hanya menghitung hingga 65, bahkan dengan 65 plusses?
NinjaBearMonkey

2
'+' tidak diizinkan, jadi saya harus mundur
Cody

Maaf, saya tidak melihat itu. Masih ada cara yang jauh lebih pendek untuk menghasilkan 191 .
NinjaBearMonkey

2
Itu adalah solusi 192 byte, saya hanya meninggalkannya dan melakukan coretan daripada menghapusnya karena saya pikir itu lucu dari 192 ke 19
Cody

6

JavaScript (ES6), 21 byte

_=>(8^2).toString(22)

Saya awalnya mencoba mengkonversi falseke string untuk melakukan ini, tetapi saya butuh 23 byte pada saat itu. Sejak itu saya menemukan cara yang lebih pendek, yaitu 14 byte:

_=>`!${!2}`[2]

Saya tidak berpikir Anda bisa mendapatkan huruf besar di Abawah aturan, karena Anda memerlukan salah satu String.fromCharCodeatau .toUpperCase()keduanya mengandung a.


Anda bisa mendapatkan huruf besar menggunakan JSF atau turunan menggunakan properti yang dikomputasi
Downgoat

1
@Downgoat Conor O'Brien sudah menunjukkan caranya.
Neil

6

C, (19?) 24 byte

Terima kasih untuk Dennis:

f(){printf("%c",88-23);}

sama panjang:

f(){printf("%c",'C'-2);}

yang memungkinkan juga huruf kecil:

f(){printf("%c",'c'-2);}

Ada solusi 19 byte sebagai fungsi memodifikasi parameternya, yang memiliki cacat:

g(int*p){*p='C'-2;}

//Usage:

main(){
  int c; //cannot be char
  g(&c);
  printf("%c\n",c);
}

Jika cdideklarasikan char, gmodifikasi keseluruhan intsehingga menghancurkan tumpukan yang menyebabkan nilai-nilai lain dimodifikasi atau program dibatalkan dengan pesan kesalahan. Satu-satunya cara untuk menghindari adalah untuk menyatakan int c;di maindan mencetak dengan "%c", tapi yang terasa seperti sebuah jalan.

solusi yang lebih lama

f(){printf("%c",'B'-2/2);} //26 bytes
f(i){i='B';printf("%c",--i);} //29 bytes
f(){int*i="B";int j[]={*i-(2/2),2-2};printf("%s",j);} //53 bytes

Hanya fungsi, karena maindilarang.


3
88-23harus menyimpan beberapa byte.
Dennis

Untuk huruf kecil a, Anda dapat menggunakan (333-33) / 3-3. Ini tidak sesingkat 'c'-2, tapi ini 3er. 33 * 3-2 juga dimungkinkan.
rici

Jika Anda menggunakan write () bukan printf Anda bisa menjadikannya program; tentukan langkah-langkah pembuatan untuk memastikan Anda tidak terhubung dengan libc sama sekali; jika tidak ada _start simbol pertama dilompat ke dan _exit diizinkan sehingga aman. Setidaknya satu versi gcc akan mengoptimalkan write () ke syscall langsung tanpa panggilan fungsi sama sekali.
Joshua

Bergantung pada IDE Anda, Anda dapat melakukan sesuatu seperti ini printf("%c",~'ɦ');:, meskipun "A" akan memiliki tanda aksen yang ditambahkan heh
Albert Renshaw

@AlbertRenshaw ɦadalah karakter 2-byte
Karl Napf

6

dc, 4 byte

833P

UCHAR_MAX meluap menggulung tabel enam tiga kali sebelum mendarat di 65.


6

Lua, 36 byte

Yang satu ini butuh waktu sejak BANYAK fungsi Lua standar yang diambil dari aturan (semua math, string.char, string.match, pairs, bahkan next)

Ini mengambil keuntungan dari fakta bahwa Lua memiliki global _VERSIONyang biasanya dimulai dengan "Lua" (misalnya, Lua 5.1atau serupa untuk versi lain), jadi kecuali ini dijalankan pada penerjemah non-mainstream, karakter ketiga akan menjadi 'a'

print(({_VERSION:find("..(.)")})[3])

The {...}[3]adalah untuk kelompok hasil findyang juga termasuk indeks di mana itu cocok, dan kemudian kembali item ketiga yang merupakan karakter cocok (yang a)


1
print(({type{}:find".(.)"})[3]) 31 byte
Egor Skriptunoff

6

Haskell, 10 byte

Sebagai fungsi (atau lebih tepatnya pernyataan karena tidak ada input yang diperlukan)

f=pred 'B'

lakukan triknya. Cobalah di Ideone. Program lengkap tidak mungkin karena ini perlu mengandung a main.


Saya rasa ini tidak valid. Tugas tersebut mengharuskan untuk "mencetak" atau "menampilkan" A. Fungsi Anda hanya mengembalikannya dan program tertaut menampilkannya putCharyang digunakan u.
nimi

Anda benar, namun aturan telah diperbarui dan sekarang kembali dari fungsi tampaknya baik-baik saja.
Laikoni

Tidak, aturannya masih mengatakan printdan / atau display.
nimi

2
Dennis bertanya secara eksplisit apakah kembali dari suatu fungsi alih-alih mencetak tidak apa-apa dan OP menjawab dengan ya, tetapi kata-kata yang diperbarui setelahnya dari pertanyaan itu masih tidak mencerminkan hal ini. Saya kira kita masih harus menunggu klarifikasi lebih lanjut.
Laikoni

1
OP mengonfirmasi bahwa Aharus dicetak / ditampilkan dan tidak dikembalikan.
nimi


5

dc, 8 7 byte

-1B terima kasih kepada Dennis

88 23-P

Menekan 88, menekan 23, mengurangi, meninggalkan 65. Mencetak bagian atas tumpukan (65) sebagai string ASCII, dapat menelusuri baris baru.

Sunting:

Ini adalah beberapa cara lain yang saya temukan. Ini pada dasarnya menjadi permainan "menghasilkan angka 65 dan 97 hanya menggunakan [238B-F]dan tanpa penambahan". Ironisnya, saya menemukan yang terpanjang paling menarik.

_Fdd/r-oC 2-n  # involves changing the base
2_2/8d*3*2/-P
Idd2/2/-2*on   # also changes base
2d8r^r_2/-P
8d*2_2/-P
B 3d**2-P
33 3*2-P
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.