元宵佳節,程序員小明被女友罰寫一萬遍“我愛你”,還不準用循環和遞歸?!

元宵佳節,風流倜儻的程序員小明終於東窗事發,被他那聰明漂亮、溫柔大方的女朋友小芳發現了他的風流往事,被罰寫一萬遍“我愛你”,還不準用循環和遞歸!請看機智的小明如何從容應對 😘 文末有小明的獨家把妹祕笈哦~

運算符重載

>>> a = '我愛你'*10000
>>> print(a)
我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你我愛你...

假裝用FP包裝一下,這樣顯得比較有逼格一點:

def f(s):
    print(s)
    return 0

sum(map(f, ["我愛你"]*10000))

定時器

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;

public class LoveYa10000 {
	public static void main(String[] args) throws InterruptedException {
		final AtomicInteger count = new AtomicInteger(0);
		final CountDownLatch latch = new CountDownLatch(1);
		final ScheduledExecutorService scheduler = new ScheduledThreadPoolExecutor(1);
		scheduler.scheduleWithFixedDelay(new Runnable() {
			@Override
			public void run() {
				if (count.incrementAndGet() <= 10000) {
					System.out.println("我愛你");
				} else {
					latch.countDown();
					scheduler.shutdown();
				}
			}
		}, 0, 1, TimeUnit.MILLISECONDS);
		latch.await();
		System.out.println("done...");
	}
}

多線程

	final static AtomicInteger ATOMIC_INTEGER = new AtomicInteger(0);
	static class LoveYaThread extends Thread {
		@Override
		public void run() {
			System.out.println("我愛你" + ATOMIC_INTEGER.get());
			if (ATOMIC_INTEGER.incrementAndGet() < 10000) {
				new LoveYaThread().start();
			}
		}
	}
	public static void main(String[] args) throws InterruptedException {
		new LoveYaThread().start();
	}

笛卡爾

SQL也是可以生成序列的,用笛卡爾運算替代循環:

CREATE OR REPLACE VIEW generator_16
AS SELECT 0 n UNION ALL SELECT 1  UNION ALL SELECT 2  UNION ALL
   SELECT 3   UNION ALL SELECT 4  UNION ALL SELECT 5  UNION ALL
   SELECT 6   UNION ALL SELECT 7  UNION ALL SELECT 8  UNION ALL
   SELECT 9   UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
   SELECT 12  UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
   SELECT 15;

CREATE OR REPLACE VIEW generator_256
AS SELECT ( ( hi.n << 4 ) | lo.n ) AS n
     FROM generator_16 lo, generator_16 hi;

CREATE OR REPLACE VIEW generator_4k
AS SELECT ( ( hi.n << 8 ) | lo.n ) AS n
     FROM generator_256 lo, generator_16 hi;

CREATE OR REPLACE VIEW generator_64k
AS SELECT ( ( hi.n << 8 ) | lo.n ) AS n
     FROM generator_256 lo, generator_256 hi;
     
select l.* from
(select '我愛你') l 
 join generator_64k r
on r.n<10000;

宏展開

#include <stdio.h>
#define STEP1 step();
#define STEP10 STEP1 STEP1 STEP1 STEP1 STEP1 STEP1 STEP1 STEP1 STEP1 STEP1
#define STEP100 STEP10 STEP10 STEP10 STEP10 STEP10 STEP10 STEP10 STEP10 STEP10 STEP10
#define STEP1000 STEP100 STEP100 STEP100 STEP100 STEP100 STEP100 STEP100 STEP100 STEP100 STEP100
#define STEP10000 STEP1000 STEP1000 STEP1000 STEP1000 STEP1000 STEP1000 STEP1000 STEP1000 STEP1000 STEP1000

int n = 0;

int step()
{
  if (++n <= 10000){
    printf("%s%d\n", "我愛你", n);
  }
}

int main()
{
  STEP10000;
}

goto

package main

import "fmt"

func main() {
   var a int = 1

   LOOP: if a <= 10000 {
            fmt.Printf("我愛你%d\n", a)
            a++
            goto LOOP
        }
}

小明的泡妞祕笈

老司機小明告訴你,其實用N種語言打印一萬遍“我愛你”這種花裏胡哨的東西,對於妹子來說就跟茴香豆的“茴”字有幾種寫法差不多,還不如拿一萬塊甩給妹子買包包來的實際!
而小明的把妹祕笈其實很簡單:長得帥就可以了。

參考資料

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章