พิมพ์ผู้ชนะรางวัลออสการ์สาขาภาพยนตร์


49

ความท้าทายนี้จัดขึ้นเพื่อยกย่องผู้ชนะรางวัล Best Picture at the Oscars 2017, La La Land Moonlight!


ความท้าทายของคุณคือการพิมพ์ข้อความ

ลาลาที่ดิน
หยุดชั่วคราวหนึ่งวินาทีจากนั้นเปลี่ยนข้อความที่จะแสดง

La La Landแสงจันทร์
ข้อความเดิม (La La Land) ต้องมีเส้นขีด สิ่งนี้สามารถทำได้โดยการล้างหน้าจอการวาดที่ด้านบนของข้อความต้นฉบับหรือโดยวิธีแก้ปัญหาที่ฉลาดอื่น ๆ

นี่คือมีจำนวนไบต์ต่ำสุดที่จะชนะ ใช้กฎมาตรฐานของกอล์ฟ


โอ้ว้าว! ความท้าทายของฉันได้รับการตอบรับอย่างดีมันโพสต์บน Twitter
vikarjramun

ฉันสงสัยว่าภาษาใดสามารถใช้La La La(nd)รูปแบบที่เป็นจริงได้หรือไม่
12Me21

คำตอบ:


13

เยลลี่ 31 ไบต์

“XSøjĠḌ⁻Ça»Œts⁵µṀȮ⁸œS“Æɓ9m“ɓm”ż

ทดสอบกับ xterm LANG=en_USและ ไม่ทำงานกับ TIO ด้วยเหตุผลหลายประการ

hexdump

00000000: 58 53 1d 6a c4 ad 8b 0e 61 fb 13 74 73 85 09 c8  XS.j....a..ts...
00000010: ca 88 1e 53 fe 0d 9b 39 6d fe 9b 6d ff f9        ...S...9m..m..

การตรวจสอบ

จับภาพหน้าจอ

พื้นหลัง

คำตอบนี้ทำให้การใช้ตัวควบคุมและANSI ลำดับหนี

  • 0d( <CR>) ถูกนำมาใช้เพื่อกลับไปยังจุดเริ่มต้นของสายการบินหลังจากพิมพ์La La Land

  • 9b 39 6d( <CSI> 9 m) ใช้เพื่อเปิดใช้งานข้อความหยุดทำงานก่อนพิมพ์La La Landเป็นครั้งที่สอง

  • 9b 6d( <CSI> m) จะใช้ในการตั้งค่าหน้าและพื้นหลังเริ่มต้นไปยังโหมดจึงปิดตีผ่านก่อนที่จะพิมพ์แสงจันทร์

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

“XSøjĠḌ⁻Ça»Œts⁵µṀȮ⁸œS“Æɓ9m“ɓm”ż Main link. No arguments.

“XSøjĠḌ⁻Ça»                     Index into Jelly's inbuilt dictionary to yield
                                "LA LA Land moonlight".
           Œt                   Convert to title case, yielding the string
                                "La La Land Moonlight".
             s⁵                 Split into chunks of length 10, yielding
                                A =: ["La La Land", " Moonlight"].
               µ                Begin a new chain with argument A.
                Ṁ               Take the maximum, yielding "La La Land".
                 Ȯ              Output; print "La La Land".
                  ⁸œS           Sleep for bool("La La Land") seconds and yield A.
                     “Æɓ9m“ɓm”ż Zip ["\r\x9b9m", "\x9bm"] with A, yielding
                                [["\r\x9b9m","La La Land"],["\x9bm"," Moonlight"]].
                                (implicit) Flatten and print.

26

เป็นกลุ่ม 37 ไบต์

3iLa <esc>snd<esc>gs:s/./&<C-v>u336/g
A Moonlight

ทางออกที่ค่อนข้างตรงไปตรงมา

นี่เป็นภาพเคลื่อนไหวของการทำงาน:

ป้อนคำอธิบายรูปภาพที่นี่


แต่ไม่มีการนอนหลับ :(
Cruncher

1
@Cruncher ใช่มี! gsหลับเป็นเวลาหนึ่งวินาที
DJMcMayhem

ที่น่าสนใจโดยทั่วไปคุณเรียกใช้วิธีนี้อย่างไร เพราะฉันพิมพ์สิ่งนี้ลงในกลุ่มและใช้งานได้ แต่มันสูญเสียความล่าช้าครั้งที่สอง (ในการพิมพ์ที่ช้าของฉันฉันไม่ได้สังเกตเห็นความล่าช้าในขณะที่ฉันกำลังคัดลอกจากที่นี่)
Cruncher

ไม่เป็นไรฉันหามาโครด้วย เจ๋งมาก!
Cruncher

25

HTML, 153 148 ไบต์

ใช้ภาพเคลื่อนไหว CSS ทดสอบบน Firefox และ Chrome เท่านั้น

<s>La La Land</s> <b>Moonlight<style>@keyframes l{0%{text-decoration:none}}@keyframes m{0%{opacity:0}}b,s{animation:m 0s 1s both}s{animation-name:l}

<s> La La Land </s> <b> แสงจันทร์ </b>


คุณสามารถวางหนึ่งในการ@keyframesประกาศครั้งสุดท้ายและลบวงเล็บปีกกาปิดทั้งสอง
darrylyeo

@darrylyeo: Firefox ปฏิเสธที่จะใช้กฎหากมีสิ่งใด}ขาดหายไปดังนั้นน่าเสียดายที่ไม่สามารถทำได้
kennytm

19

HTML + JavaScript, 18 + 59 = 77 ไบต์

setTimeout('O.innerHTML="<s>La La Land</s> Moonlight"',1e3)
<p id=O>La La Land

น่าเศร้าที่ดูเหมือนจะไม่มีวิธีที่มีประสิทธิภาพในการใช้ซ้ำO.innerHTML...


จะsetTimeout('a=O.innerHTML;a=a.strike()+" Moonlight"',1e3)ทำงานอย่างไร
Kritixi Lithos

1
@KritixiLithos ฉันไม่คิดอย่างนั้น การปรับเปลี่ยนจะไม่มีการปรับเปลี่ยนa O.innerHTML
ETHproductions

18

อ็อกเทฟ81 81ไบต์

บันทึก 15 ไบต์ด้วย @Stewie

text(0,.5,'La La Land');pause(1);text(0,.5,'---------- Moonlight')

สาธิตออนไลน์ได้ที่นี่

ในขณะที่การสาธิตแสดงสองแปลงแยกต่างหากเมื่อทำงานในรุ่นเดสก์ท็อปของ MATLAB มันจะแสดงพล็อตแรกรอ 1 วินาทีจากนั้นเพิ่มสตริงที่สองลงในพล็อตเดียวกัน

เนื่องจาก Octave ไม่รองรับการอ่านข้อความฉันจึงเลือกที่จะแสดงข้อความภายในaxesวัตถุในรูปและแสดง "strikethrough" โดยแสดง'--------'ที่ด้านบนของข้อความเริ่มต้น (ความคิดเริ่มต้นโดย @Stewie) ก่อนหน้านี้ฉันได้วางแผนlineวัตถุที่จะตี'La La Land'

ป้อนคำอธิบายรูปภาพที่นี่


1
วิธีการที่ดี ... :) คุณสามารถบันทึก 15 text(0,.5,'La La Land');pause(1);text(0,.5,'---------- Moonlight')ไบต์เช่นนี้
Stewie Griffin

@ StewieGriffin ขอบคุณ! อัปเดต
Suever

ระดับแปดเสียงไม่ยอมให้คุณทำ'-'*8+แทนเครื่องหมายขีดคั่นหรือไม่?
Nic Hartley

@QPaysTaxes น่าเสียดายที่มันไม่ได้
Suever

1
ยี้ อีกหนึ่งคำถาม: ทำไมไม่วาดที่ (0, 0) หรือ (1, 0) ดูเหมือนว่าอย่างใดอย่างหนึ่งเหล่านั้นจะช่วยคุณ byte (no .)
Nic Hartley

10

Bash, 70, 69 66 ไบต์

-4 แต้มด้วย Riley

echo La La Land;sleep 1;echo -e "\r\e[9mLa La Land\e[0m Moonlight"

ให้เครดิตกับคำตอบของ Sylvain Pineau ใน AskUbuntuสำหรับการนัดหยุดงาน


1
ฉันคิดว่าคุณสามารถบันทึกไม่กี่ไบต์โดยใช้\rในครั้งที่สองแทนecho นอกจากนี้คุณไม่จำเป็นต้องมีช่องว่างก่อนที่สองclear echo
Riley

สิ่งนี้จะไม่พิมพ์พื้นที่หลังจากข้อความที่ขีดออก
Loovjo

นอกจากนี้ฉันคิดว่าclear;ควรไปก่อน และคุณมีพื้นที่ที่ไม่จำเป็น; echoค่ะ
Erik the Outgolfer

2
โซลูชันที่สั้นลงซึ่งเพิ่มพื้นที่หลังจากข้อความขีดเส้นและทำการแก้ไขข้อความที่พิมพ์ในบรรทัดโดยใช้รหัส ANSI \e[Aดังนั้นจึงไม่clearจำเป็น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการที่เห็นว่าฉัน s="La La Land";echo $s;sleep 1;echo -e "\e[A\e[9m$s\e[0m Moonlight"
seshoumara

1
หรือecho -n La La Land;sleep 1;echo -e "\r\e[9mLa La Land\e[0mMoonlight"
Digital Trauma

9

QBasic, 61 ไบต์

SCREEN 9
?"La La Land";
SLEEP 1
LINE(0,7)-(80,7)
?" Moonlight

ใช้โหมดกราฟิกวาดเส้นจริงผ่านข้อความ นี่คือสิ่งที่ดูเหมือนในQB64 :

แสงจันทร์

รหัสควรอธิบายได้ด้วยตนเอง แต่นี่เป็นเวอร์ชั่นที่ไม่ดีนัก:

SCREEN 9             ' One of several graphics modes
PRINT "La La Land";  ' The semicolon suppresses the trailing newline
SLEEP 1
LINE (0,7)-(80,7)
PRINT " Moonlight"

8

MATL, 46 ไบต์

'La La Land'tDlY.ttv45HY(`t@Y)' Moonlight'hXxDT

เนื่องจาก MATL ไม่ได้รับการสนับสนุนสำหรับรหัสควบคุมหรือการจัดรูปแบบข้อความโซลูชันนี้จะสลับระหว่าง'La La Land'และ'-----------'เร็วที่สุดเพื่อจำลองข้อความขีดทับ

ป้อนคำอธิบายรูปภาพที่นี่

คำอธิบาย

'La La Land'   % Push the string literal to the stack
tD             % Duplicate this string and display
tv             % Stack a version of this string on top of another
45HY(          % Replace the second one with '----------'
`              % Do...while loop
  t            % Duplicate the 2D character array
  @Y)          % Grab the row corresponding to the loop index (modular indexing)
  ' Moonlight' % Push the string literal to the stack
  h            % Horizontally concatenate the two
  Xx           % Clear the display
  D            % Display the string
  T            % Push a literal TRUE to the stack to make it an infinite loop

1
ความคิดสร้างสรรค์! ฉันชอบมัน
vikarjramun

3
+1 สำหรับความคิดสร้างสรรค์ แต่ไม่แน่ใจว่าเป็นไปตามกฎหรือไม่
DBX12

5

Bash + pv , 50 ไบต์

printf ♪La\ La\ Land›%b 9m\\0 m\ Moonlight|pv -0L1

นี้สร้างขึ้นบน@ คำตอบทุบตี

แสดงถึงการคืนค่าขนส่ง ( 0x0d ), ไบต์ CSI ( 0x9b )

hexdump

0000000: 70 72 69 6e 74 66 20 0d 4c 61 5c 20 4c 61 5c 20  printf .La\ La\
0000010: 4c 61 6e 64 9b 25 62 20 39 6d 5c 5c 30 20 6d 5c  Land.%b 9m\\0 m\
0000020: 20 4d 6f 6f 6e 6c 69 67 68 74 7c 70 76 20 2d 30   Moonlight|pv -0
0000030: 4c 31                                            L1

การตรวจสอบ

จับภาพหน้าจอ

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

printfซ้ำสตริงรูปแบบซ้ำหลาย ๆ ครั้งตามที่จำเป็นเพื่อให้อาร์กิวเมนต์อื่นหมด เนื่องจากมีหนึ่งการเกิดขึ้นของ%bและสองข้อโต้แย้ง ( 9m\\0และm\ Moonlight) มันจะสร้างกระแสไบต์ต่อไปนี้

\rLa La Land\x9b9m\0\rLa La Land\x9bm Moonlight

สิ่งนี้ทำดังต่อไปนี้

  • \r นำเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัด

  • La La Land ถูกพิมพ์คำต่อคำ

  • \x9b9m เปิดใช้งานข้อความประท้วง

  • \0pv -0ชุดเครื่องหมายสิ้นสุดของบรรทัด

  • \rLa La Land ทำเช่นเดียวกับเมื่อก่อน

  • \x9bm รีเซ็ตพื้นหน้าและพื้นหลังเป็นโหมดเริ่มต้นเพื่อยกเลิกการหยุดงานประท้วง

  • Moonlight ถูกพิมพ์คำต่อคำ

ในที่สุดpv -0L1พิมพ์บรรทัดที่สิ้นสุดด้วย null หนึ่งบรรทัดต่อวินาทีเพื่อแนะนำการหน่วงเวลาที่ต้องการ


3
มันเป็นเรื่องบังเอิญที่ช่วยให้การเล่นกอล์ฟของคุณหรือคุณต้องการใช้กับ La La Land โดยเฉพาะหรือไม่? ฉันชอบมัน!
BruceWayne

การคืนสินค้าเป็นวิธีที่สั้นที่สุดในการกลับไปที่จุดเริ่มต้นของบรรทัด ความจริงที่ว่ามันมีสไตล์ที่บางครั้งก็เป็นเพียงเรื่องบังเอิญที่มีความสุข
Dennis

การใช้งานpvแทนที่จะเป็นsleepเหมือนคนอื่น ๆ นั้นสวยงาม
IQAndreas

1
@IQAndreas แนวคิดที่จะใช้pvคือสิ่งที่ฉันได้รับจากคำตอบ Bash ที่เชื่อมโยงดังนั้นฉันจึงไม่สามารถรับเครดิตได้
Dennis

3

HTML + JavaScript, 10 + 63 = 73 ไบต์

setTimeout("document.write('<s>La La Land</s> Moonlight')",1e3)
La La Land


เบราว์เซอร์นี้ทำงานอย่างไร
ติตัส

2
@Titus ฉันคิดว่าพวกเขาทั้งหมด แต่ฉันยืนยันว่ามันใช้งานได้ใน Chrome + Firefox จนถึงตอนนี้
nderscore

3

PHP ( 86 75 69 ไบต์)

La La Land<?=sleep(1)?:"\rL̶a̶ ̶L̶a̶ ̶L̶a̶n̶d̶ Moonlight";

ใช้อักขระ UTF-8 U + 0336 สำหรับการขีดฆ่า

แก้ไข: บันทึกแล้ว 17 ไบต์พร้อมคำแนะนำ @Titus แสดงความคิดเห็น


1
sleepส่งคืนค่า 0 เสมอ ดังนั้นคุณสามารถทำได้sleep(1)?:" ̶L̶a̶ ̶L̶a̶ ̶L̶a̶n̶d̶ Moonlight"(-3 ไบต์) \rแทนการ\033[10Dบันทึก 6 ไบต์และรวมไว้ในสตริงสุดท้ายจะบันทึกอีก 4
ติตัส

โอ้ว้าวแต่ละคนที่ฉันควรจะได้เห็นฉันเดาว่ามันมาพร้อมกับการฝึกฝน ขอบคุณมาก! ถ้าคุณต้องการให้คำตอบของคุณเองเพื่อให้ได้ตัวแทนที่เป็น 11 ไบต์ของการปรับปรุงฉันจะลบคำตอบของฉันและ upvote คุณ :)
madshvero

ไม่จำเป็นต้องลบคำตอบที่ถูกต้อง ฉันไม่โพสต์ของตัวเองเมื่อเล่นกอล์ฟคนอื่น ๆ ตอบ - ถ้า OP ไม่ตอบสนอง นี่คืออีกสามไบต์: ไม่จำเป็นต้องใส่ช่องว่างนำหน้าหรือขีดทับบนช่องว่างสุดท้าย การใช้ UTF-8 เป็นชุดอักขระไม่ใช่การโกง แต่คุณสามารถพูดถึง "ใช้อักขระ UTF-8 U+0336สำหรับ strikethrough"
ติตัส

โอ้และLa La Land<?=แทนที่จะ<?="La La Land",บันทึกอีก 3 ไบต์
ติตัส

3

Pyth - 47 ไบต์

ทำสิ่งที่ทับกันตอนนี้

K "La La Land" .d_1 "\ 033c" + j "\ u0336" K "แสงจันทร์

มันไม่ทำงาน คุณต้องการ a "+1 สำหรับหน้า
Erik the Outgolfer

@EriktheOutgolfer> _ <ไม่รู้ว่าเกิดอะไรขึ้น
Maltysen

อะไรคือ<exmpty line>? ฉันอยากจะแนะนำ<pre>แท็ก
CalculatorFeline

3

C 87 86 ไบต์

f(){char*s="La La Land";puts(s);printf("\e[9m%s\e[0m",s);sleep(1);puts(" Moonlight");}

เวอร์ชันที่ไม่ถูกปรับแต่ง:

void f()
{
  char *s="La La Land";
  puts(s);
  printf("\e[9m%s\e[0m",s);
  sleep(1);
  puts(" Moonlight");

}

2
คุณไม่จำเป็นต้องช่องว่างระหว่างและchar *
kennytm

คุณต้องโทรหาf()ในเวอร์ชั่นที่ไม่ดีเลยใช่ไหม
Rodrigo Hahn

@ kennytm Thnaks สำหรับการบันทึก 1 ไบต์อัปเดตแล้ว
Abel Tom

1
@RodrigoHahn โดยค่าเริ่มต้นคำตอบรหัสกอล์ฟอาจจะเป็นฟังก์ชั่นหรือโปรแกรมf()จึงไม่มีเราไม่จำเป็นที่จะเรียก
kennytm

3

HTML + JavaScript ขนาด 100 ไบต์

La La Land<script>setTimeout(function(){document.write("<s>La La Land</s> Moonlight")},1e3)</script>

setTimeout(function(){document.write("<s>La La Land</s> Moonlight")},1e3);
La La Land


document.write มาแทนที่ข้อความที่มีอยู่ได้อย่างไร
vikarjramun

หากเอกสารของคุณเต็มแล้วคุณกำลังใช้ document.write (เช่นการแนบกับเหตุการณ์หรือหมดเวลา) จะลบ HTML ที่มีอยู่ทั้งหมด Refer
Sourav

3

GNU sed + sleep, 63 58 ไบต์

แก้ไข:บันทึก 5 ไบต์ตามความคิดเห็นของDigital Trauma

รอระหว่างสองงบพิมพ์ไม่สามารถทำได้โดยใช้ sed sleep 1คนเดียวและเป็นเช่นที่ผมเรียกว่า เป็นไปได้ที่จะทำการเรียกระบบจาก sed โดยใช้eคำสั่งซึ่งเป็นส่วนขยายของ GNU

s:$:La La Land:p
esleep 1
s:.:&̶:g
s:.*:\c[[A& Moonlight:

ในการสร้างข้อความขีดทับ (บรรทัดที่ 3) จะมีการผนวก "การรวมการซ้อนทับแบบขีดยาวแบบยาว" U + 0336เข้ากับอักขระแต่ละตัว หลังจากนั้นผมย้ายเคอร์เซอร์ขึ้น 1 เส้นได้อย่างมีประสิทธิภาพแทนที่ข้อความเก่าเมื่อพิมพ์สิ่งใหม่โดยใช้ที่เรียกว่าลำดับหนี ANSI สิ่งเหล่านี้ถูกตีความโดยเทอร์มินัลว่าเป็นคำสั่งการจัดรูปแบบพิเศษ คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับพวกเขาที่นี่

ภาพ gif

คำอธิบาย:

s:$:La La Land:p         # add "La La Land" to pattern space and print it
esleep 1                 # run system command 'sleep 1'
s:.:&̶:g                  # append U+0336 after each character (strike-through)
s:.*:\c[[A& Moonlight:   # '\c[[A' is '(escape)[A', ANSI code to move the cursor
                         #up 1 line. Then append ' Moonlight' and print on exit.

1
@DigitalTrauma ลืมไปโดยสิ้นเชิงเกี่ยวกับ\cดีหา! สำหรับยูนิโค้ดพิเศษนั้นเป็นครั้งแรกที่ฉันได้ยินเกี่ยวกับมัน แต่มันใช้งานได้จริง เมื่อพิมพ์โดยหน้านี้มันจะถูกรวมเข้ากับsตัวคั่นคำสั่ง:ดังนั้นจึงเป็นเรื่องแปลกที่จะเห็นว่าในตอนแรก
seshoumara

3

Java 7, 207 206 171 139 ไบต์

void c()throws Exception{System.out.print("La La Land");Thread.sleep(1000);System.out.print("\rL̶a̶ ̶L̶a̶ ̶L̶a̶n̶d̶ Moonlight");}

ฉันนะโกงกับคำตอบแรกนี้เพราะผมใช้ตีผ่าน Unicode

คำอธิบาย:

void c() throws Exception{         // Method (throws is necessary due to Thread.sleep)
  System.out.print("La La Land");  //  Show initial text
  Thread.sleep(1000);              //  Wait 1 second
  System.out.print("\r             //  Move 'cursor' to the start of the line so we can overwrite the current text
    L̶a̶ ̶L̶a̶ ̶L̶a̶n̶d̶ Moonlight");        //  and print new text
}                                  // End of method

Java 7 (พร้อม AWT), 444 429 341 ไบต์

ข้ามออก 444 ยังคงเป็นปกติ 444; (

import java.awt.*;import java.text.*;void m(){new Frame(){public void paint(Graphics g){g.drawString("La La Land",9,50);try{Thread.sleep(1000);}catch(Exception e){}AttributedString s=new AttributedString("La La Land Moonlight");s.addAttribute(java.awt.font.TextAttribute.STRIKETHROUGH,1>0,0,10);g.drawString(s.getIterator(),9,50);}}.show();}

เนื่องจากคอนโซล Java ไม่มีมาร์กอัปเช่นการถูกขีดฆ่าคุณจะต้องใช้ Java AWT และถ้าคุณคิดว่า Java Console นั้น verbose แล้วนี่ก็ยิ่งแย่ลง (ฉันรู้ฉันรู้ว่าพวกคุณส่วนใหญ่คงนึกไม่ออกว่า Java 7 นั้นเลวร้ายไปกว่านี้ .. )

คำอธิบาย:

import java.awt.*;                                         // import used for Frame and Graphics
import java.text.*;                                        // Import used for all AttributedStrings
void m(){                                                  // method
  new Frame(){                                             //  Frame
    public void paint(Graphics g){                         //   Overridden paint method
      g.drawString("La La Land", 9, 50);                   //    Show the initial text
      try{
        Thread.sleep(1000);                                //    Wait 1 second
      }catch(Exception e){}                                //    Thread.sleep requires a try-catch..
      AttributedString s
          = new AttributedString("La La Land Moonlight");  //    Object to add markup to text
      s.addAttribute(
        java.awt.font.TextAttribute.STRIKETHROUGH,         //    Strike-through attribute
        1>0,//true                                         //    Mandatory parameter before we can specify the length
        0, 10);                                            //    From length 0 to 10 (length of "La La Land")
      g.drawString(s.getIterator(), 9, 50);                //    Show this new text with strike-through part
    }                                                      //   End of paint method
  }.show();                                                //  Show Frame
}                                                          // End of method

gif เอาท์พุท:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันคิดว่าคุณสามารถลบพื้นที่ในString[] aและใช้1e3แทน1000
Kritixi Lithos

@KritixiLithos พื้นที่นั้นน่าจะหายไปแล้วแน่นอน ... อาจจะลื่นในระหว่างการเล่นกอล์ฟ สำหรับเรื่อง1e3นั้นเป็นสองเท่าและThread.sleepคาดว่าจะยาว จะสั้นกว่า1000 (long)1e3:)
Kevin Cruijssen

2
คุณหมายถึงSwingไม่Spring, คุณไม่? ฉันเกือบจะมีอาการหัวใจวาย! สปริงใน codegolf ... นอกจากนี้ในการบันทึกไบต์คุณสามารถใช้ AWT แทน Swing
Olivier Grégoire

@ OlivierGrégoireอ๊ะพิมพ์ผิดฉันหมายถึง Swing .. และขอบคุณ AWT สั้นกว่าไม่จำเป็นต้องใช้ Swing (หรือ Spring: P) เลย
Kevin Cruijssen

1
ฉันสร้างรุ่น AWT เป็นฟังก์ชัน (Java 7) ด้วยคลาสภายในที่ไม่ระบุชื่อ ฉันนำ AttributedString ไร้สาระครั้งแรกออกและเพิ่มจำนวนทั้งหมด 306 ไบต์ หากคุณไปที่ Java 8 จะยังคงมีขนาด 302 ไบต์ void m(){new Frame(){public void paint(Graphics g){g.drawString("La La Land",99,99);try{Thread.sleep(1000);}catch(Exception e){}AttributedString s=new AttributedString("La La Land Moonlight");s.addAttribute(java.awt.font.TextAttribute.STRIKETHROUGH,1>0,0,10);g.drawString(s.getIterator(),99,99);}}.show();}
Olivier Grégoire

2

Python 3, 90 ไบต์

ใช้ Unicode (U + 0336) เพื่อขีดฆ่าเนื่องจากเทอร์มินัล macOS ไม่สนับสนุน\e[9mคำสั่งนั้น

import time
s='La La Land '
print(s,end='\r')
time.sleep(1)
print('̶'.join(s),'Moonlight')

L̶a̶̶L̶a̶̶L̶a̶n̶d̶ Moonlight


2

Arduino, 332 331 ไบต์

ไม่แข่งขันเพื่อความสนุก

#include<LiquidCrystal.h>
LiquidCrystal lcd(7,8,9,10,11,12);String a="La La Land";String b="-- -- ----";void setup(){lcd.begin(16,2);}void loop(){lcd.home();lcd.print(a);delay(1000);lcd.clear();lcd.print(b);lcd.setCursor(0,2);lcd.print("Moonlight");while(1){delay(150);lcd.home();lcd.print(a);delay(150);lcd.home();lcd.print(b);}}

รายการวัสดุ:

  • 1 x Arduino Uno
  • 1 x LCD 16 x 2
  • 1 x 10K โพเทนทิโอมิเตอร์
  • ตัวต้านทาน 1 x 180 โอห์ม

L̶a̶̶L̶a̶̶L̶a̶n̶d̶ Moonlight


1
ยินดีต้อนรับสู่เว็บไซต์ ฉันไม่ทราบว่า Arduino คล้ายกันกับ C แต่ฉันค่อนข้างแน่ใจว่าคุณสามารถลบพื้นที่ในของคุณได้#include
Wheat Wizard

จากการคำนวณของฉันฮาร์ดแวร์มีราคา 30 ไบต์ (2 สำหรับตัวต้านทาน, 3 สำหรับโพเทนชิโอมิเตอร์, 1 สำหรับการตั้งค่า, 10 (สูงสุดสำหรับการเปลี่ยนแปลง) สำหรับ LCD และ 14 สำหรับสายไฟ (1 ไบต์ต่อสาย)) อย่างไรก็ตามนี่เป็นเพียงข้อเสนอแนะ TIO กล่าวว่ารหัสนี้มีขนาดเพียง 331 ไบต์ มีการขึ้นบรรทัดใหม่หรือไม่?
CalculatorFeline

@Weateat ตัวช่วยสร้างที่ถูกต้อง ซ่อมมัน!
fluxa

1
จุดดี @CalculatorFeline แต่ในกรณีนี้เราควรนับต้นทุนฮาร์ดแวร์ของคำตอบอื่น ๆ ทั้งหมด อาจเป็นไปได้ว่าการตั้งค่าของฉันถูกที่สุด : D
fluxa

... D8 จบแล้ว D8
เครื่องคิดเลข

2

Python3, 99 ไบต์

import time
l='La La Land'
s='\u0336'
print(l,end="\r")
time.sleep(1)
print(s.join(l)+' Moonlight')

ถ้าคุณตั้งค่าคุณl = 'La La Land ไม่สามารถหลีกเลี่ยงการ+sสำหรับ -2 ตัวอักษร? .
walpen

@ walpen ฉันต้องใช้มันสองครั้งนั่นเป็นเหตุผลที่ฉันเก็บมันไว้ใน s
Miguel


1

SmileBASIC ขนาด 45 ไบต์

หนึ่งไบต์น้อยต้องขอบคุณเคล็ดลับช่วงเวลาแห่งเวทมนตร์ของ 12Me21

เท่าที่ฉันทราบ SB ไม่มีตัวละครขีดทับดังนั้นฉันจึงใช้GLINEแทน เห็นได้ชัดว่าถือว่าหน้าจอชัดเจนใช้ACLSถ้าคุณต้องการ

?"La La Land
WAIT 60GLINE.,4,79,4?" Moonlight

1

AHK, 102 ไบต์

s=La La Land
Send,%s%
Sleep,1000
Send,^a{Del}
Loop,Parse,s
Send,%A_LoopField%{U+0336}
Send,` Moonlight

ฉันโกงนิดหน่อยเพื่อรับข้อความขีดทับโดยใช้การรวมอักขระการซ้อนทับแบบลากเส้นแบบยาวของจังหวะ สิ่งนี้อาจสร้างลักษณะที่ผิดปกติขึ้นอยู่กับการตั้งค่าของคุณ Notepad ให้ลักษณะที่ดี

รหัสในการดำเนินการ


AutoHotkey ไม่ชัดเจนว่าเป็นภาษาที่มีประสิทธิภาพมากที่สุดสำหรับเรื่องนี้ แต่มันเป็นความท้าทายที่สนุก ระวังที่คุณใช้งานเพราะมันไม่ได้สร้างการแสดงผลของตัวเองและเช็ดข้อความทั้งหมดของหน้าต่างใด ๆ ที่ใช้งานอยู่


1

Swift, 392 ไบต์

Swift + UIKit ไม่เหมาะสำหรับการเล่นกอล์ฟ! เรียกใช้สิ่งนี้ในสนามเด็กเล่น XCode และผลลัพธ์จะปรากฏในบานหน้าต่างแสดงตัวอย่าง

import UIKit
import PlaygroundSupport
let l=UILabel(frame:CGRect(x:0,y:0,width:200,height:20))
l.textColor=UIColor.red
let m="La La Land"
let n=" Moonlight"
l.text=m
DispatchQueue.main.asyncAfter(deadline:.now()+1){
let a=NSMutableAttributedString(string:m+n)
a.addAttribute("NSStrikethrough",value:1,range:NSRange(location:0,length:10))
l.attributedText=a
}
PlaygroundPage.current.liveView=l

ภาพตัวอย่าง


คือl.textColor=UIColor.redจำเป็น?
Albert Renshaw

ดูเหมือนว่าจะเป็นข้อความสีดำบนพื้นหลังสีดำเป็นอย่างอื่น
แมตต์

0

เยลลี่ , 41 ไบต์

“ñ[“m‘Ọj
“¡ṭḊßȥṡoẋ»¹13Ọ;9Ǥ;;0Ǥ;“"dE»œS1

ไม่สามารถใช้งานล่ามออนไลน์ได้


ทำไมจะไม่ล่ะ? สามารถเพิ่มความเข้ากันได้อย่างถูก?
CalculatorFeline

@CalculatorFeline No, Dennis ต้องใช้รหัสควบคุมเพื่อให้ทำงานได้และไม่ใช่ลำดับความสำคัญของเขาในขณะนี้
Erik the Outgolfer

คุณสามารถให้ภาพหน้าจอ / ภาพเคลื่อนไหว gif ของผลลัพธ์ได้หรือไม่?
ʰᵈˑ

@ ʰᵈˑฉันอาจทำแม้ว่าจะไม่มีการรับประกัน ในระหว่างนี้คุณสามารถดาวน์โหลดล่ามและทดสอบด้วยตัวคุณเอง :)
Erik the Outgolfer


0

TI-BASIC, 57 53 ไบต์

:" LA
:Text(3,4,Ans+Ans+Ans+"ND
:Pause "",1
:Line(-9,8,-2,8
:Text(3,41,"MOONLIGHT

โปรดทราบว่านี่ใช้ความสามารถของ TI-84 + CE กับระบบปฏิบัติการใหม่ล่าสุดเพื่อหยุดชั่วคราวเป็นเวลา 1 วินาที สิ่งนี้จะส่งคืนข้อผิดพลาด synthax ใน TI-84 + สำหรับการทดสอบคุณสามารถละเว้นการหยุด 1 วินาทีโดยการลบบรรทัดนั้น นอกจากนี้อย่าลืมกด Zoom 6 ก่อนเพื่อให้คุณอยู่ในการตั้งค่าหน้าต่างเริ่มต้นมิฉะนั้นคำสั่ง line จะไม่ทำงาน


0

SpecBAS - 58 ไบต์

1  ?"La La Land ";
2 WAIT 1e3
3 DRAW 0,4;80,0
4  ?"Moonlight"

อักขระแต่ละตัวมีขนาด 8x8 พิกเซลดังนั้นวาดเส้นจาก 0,4 ไปยังตำแหน่งสัมพัทธ์ 80,4 (เพิ่ม 80 ในพิกัดแรกและ 0 ถึงวินาทีเพื่อให้อยู่ในบรรทัดเดียวกัน)

ป้อนคำอธิบายรูปภาพที่นี่


0

OIL , 76 ไบต์

↩︎⎋[9m
La La Land
⎋[0m Moonlight
4
1
10
20
4
14
10
9
20
6
5
4
0
4
1
4
2
89999

แทนที่ด้วยอักขระเลี่ยงและ↩︎ด้วยการคืนค่าขนส่ง OIL ไม่มีคำสั่ง sleep ใด ๆ ดังนั้นฉันเลียนแบบโดยใช้ลูปที่นับถอยหลังจาก 89999 ถึง 1 มันใช้เวลาประมาณหนึ่งวินาทีในคอมพิวเตอร์ของฉัน แต่อาจไม่ได้อยู่ที่คุณ

ล่าม 3 บรรทัดแรกจะถูกละเว้นจากนั้นจะพิมพ์ ( 4) บรรทัดที่สอง (บรรทัดที่ 1; "La La Land") โครงสร้างต่อไปนี้คือลูปที่ลดจำนวนมากที่ท้ายจนเท่ากับ 1 ในท้ายที่สุดฉันเพิ่งพิมพ์ 3 บรรทัดแรก


0

PHP ไม่ใช่การแข่งขัน (64 ไบต์)

<?=$s="\rLa La Land",sleep(1)?:wordwrap($s,1,--,1)," Moonlight";

ใช้ UTF-8: --ย่อมาจากU+0336- แต่ฉันค่อนข้างแน่ใจว่ามันไม่ทำงานอย่างโดดเดี่ยว

หากไม่เป็นเช่นนั้นให้ลอง~"1I"หรือ~I1แทน--(+3 หรือ +1 ไบต์)

ไม่มีเวลาจัดเก็บเป็นไฟล์หรือหาวิธีตั้งค่าคอนโซลของฉันเป็น UTF-8 ดังนั้นฉันจึงไม่สามารถทดสอบสิ่งเหล่านี้ได้ แต่ใครก็ตามที่สามารถ: โปรดแจ้งให้เราทราบว่านี่คือ BS ที่สมบูรณ์หรือไม่


0

Powershell, 63 ไบต์

ใช้งานได้เฉพาะใน PowerShell ISE ไม่ใช่การแข่งขันเนื่องจาก strikethrough เปลี่ยนไปโดยตัวอักษรตัวหนึ่งและฉันไม่สามารถแก้ไขได้

'La La Land',('̶'*10+' Moonlight')|%{sleep 1;Write-Host $_ -N}

L̶a̶̶L̶a̶̶L̶a̶n̶d̶ Moonlight

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