Categories
All 算法

做題筆記:Merge Two Sorted Lists (Java)

題目描述:

給定兩個排好序的 linked list list1list2 的 head。

將前兩個 linked list 的節點拼接在一起合併到一個完成排序的 linked list 中。

返回合併之後的鏈結串列的 head。

Example 1:

Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]

Example 2:

Input: list1 = [], list2 = []
Output: []

Example 3:

Input: list1 = [], list2 = [0]
Output: [0]

解法:

class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode result = new ListNode();
        ListNode head = result;
        while (true){
            if (list1==null){
                result.next=list2;
                break;
            }
            if (list2==null){
                result.next=list1;
                break;
            }
            if (list1.val<=list2.val){
                result.next=list1;
                list1=list1.next;
            }
            else {
                result.next=list2;
                list2=list2.next;
            }
            result=result.next;
        }
        return head.next;
    }
}

1 ms

Categories
算法 All

做題筆記:Valid Parentheses (Java)

題目描述:

給定一個僅包含字符 '(', ')', '{', '}', '['']' 的字符串 s,確定輸入字符串是否有效。

有效的情況指:

  1. 前括號必須用相同類型的括號閉合。
  2. 前括號必須以正確的順序閉合。

Example 1:

Input: s = "()"
Output: true

Example 2:

Input: s = "()[]{}"
Output: true

Example 3:

Input: s = "(]"
Output: false

暴力解法:

昨天半夜擼的,還是想不到什麼好點子:

class Solution {
    public boolean isValid(String s) {
        StringBuilder sb = new StringBuilder();
        sb.append(s);
        
        for(int i = 0; i<sb.length()-1; i++ ){
            if ( (sb.charAt(i) == '(' && sb.charAt(i+1) == ')') || 
                 (sb.charAt(i) == '[' && sb.charAt(i+1) == ']') || 
                 (sb.charAt(i) == '{' && sb.charAt(i+1) == '}') 
               ){
                sb = sb.deleteCharAt(i+1);
                sb = sb.deleteCharAt(i);
                i = -1;
            }
        }
        if (sb.toString() == ""){
            return true;
        }
        else{
            return false;
        }
    } 
}

79 ms,慘不忍睹。

Stack 解法:

Hint 中已經提到,應該使用 Stack :

class Solution {
    public boolean isValid(String s) {
	   Stack<Character> stack = new Stack<Character>();
	   for (char c : s.toCharArray()) {
		   if (c == '(')
			   stack.push(')');
		   else if (c == '{')
			   stack.push('}');
		   else if (c == '[')
			   stack.push(']');
		   else if (stack.isEmpty() || stack.pop() != c)
			   return false;
	   }
	   return stack.isEmpty();
    }
}

2 ms

Categories
算法 All

做題筆記:Longest Common Prefix (Java)

還滿難的一道題。

題目描述:

編寫一個函數來查找字符串數組中最長的共有前綴字符串。

如果沒有共有前綴,則返回一個空字符串""

Example 1:

Input: strs = ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

Horizontal scanning:

自己嘗試的方法:

class Solution {
    public String longestCommonPrefix(String[] strs)
    {
        int size = strs.length;
        if (size == 0)
            return "";

        if (size == 1)
            return strs[0];

        Arrays.sort(strs);
        int end = Math.min(strs[0].length(), strs[size-1].length());
        int i = 0;
        while (i < end && strs[0].charAt(i) == strs[size-1].charAt(i) )
            i++;
        String pre = strs[0].substring(0, i);
        return pre;
    }
}

1 ms

Vertical scanning:

Solution 中提供的方法二:

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0) return "";
    for (int i = 0; i < strs[0].length() ; i++){
        char c = strs[0].charAt(i);
        for (int j = 1; j < strs.length; j ++) {
            if (i == strs[j].length() || strs[j].charAt(i) != c)
                return strs[0].substring(0, i);             
        }
    }
    return strs[0];
}

Divide and conquer:

Solution 中提供的方法三:

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0) return "";    
        return longestCommonPrefix(strs, 0 , strs.length - 1);
}

private String longestCommonPrefix(String[] strs, int l, int r) {
    if (l == r) {
        return strs[l];
    }
    else {
        int mid = (l + r)/2;
        String lcpLeft =   longestCommonPrefix(strs, l , mid);
        String lcpRight =  longestCommonPrefix(strs, mid + 1,r);
        return commonPrefix(lcpLeft, lcpRight);
   }
}

String commonPrefix(String left,String right) {
    int min = Math.min(left.length(), right.length());       
    for (int i = 0; i < min; i++) {
        if ( left.charAt(i) != right.charAt(i) )
            return left.substring(0, i);
    }
    return left.substring(0, min);
}

Binary search:

Solution 中提供的方法四:

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0)
        return "";
    int minLen = Integer.MAX_VALUE;
    for (String str : strs)
        minLen = Math.min(minLen, str.length());
    int low = 1;
    int high = minLen;
    while (low <= high) {
        int middle = (low + high) / 2;
        if (isCommonPrefix(strs, middle))
            low = middle + 1;
        else
            high = middle - 1;
    }
    return strs[0].substring(0, (low + high) / 2);
}

private boolean isCommonPrefix(String[] strs, int len){
    String str1 = strs[0].substring(0,len);
    for (int i = 1; i < strs.length; i++)
        if (!strs[i].startsWith(str1))
            return false;
    return true;
}
Categories
All 技術 算法

做題筆記:Roman to Integer (Java)

題目描述:

將羅馬數字轉換為整數,具體規則略。

Example 1:

Input: s = "III"
Output: 3
Explanation: III = 3.

Example 2:

Input: s = "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.

Example 3:

Input: s = "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

自己的 Switch 暴力解法:

兜了好幾個圈……

class Solution {
    public int romanToInt(String s) {
        int num = 0;
        StringBuilder re = new StringBuilder();
        re.append(s).reverse();
        String[] split = re.toString().split("(?<=\\G..)");
        for (String i:split){
            switch(i){
                case "VI":
                    num = num + 4;
                    break;
                case "XI":
                    num = num + 9;
                    break;
                case "LX":
                    num = num + 40; 
                    break;
                case "CX":
                    num = num + 90; 
                    break;
                case "DC":
                    num = num + 400;
                    break;
                case "MC":
                    num = num + 900; 
                    break;
                default:
                    String[] sub = i.split("");
                    for (String j:sub){
                        switch(j){
                            case "I":
                                num = num + 1;
                                break;
                            case "V":
                                num = num + 5;
                                break;
                            case "X":
                                num = num + 10; 
                                break;
                            case "L":
                                num = num + 50; 
                                break;
                            case "C":
                                num = num + 100;
                                break;
                            case "D":
                                num = num + 500; 
                                break;
                            case "M":
                                num = num + 1000;     
                                break;
                        }
                    }
                }
        }
        return num;    
    }
}

意外發生了,本地 IDE 能跑出正確答案,但是在 Leetcode 上跑不出來,我竟然為這種問題浪費了不少時間,最終也沒解決……

正確精練的 Switch 解法:

class Solution {
	 public int romanToInt(String s) {
	    int nums[] = new int[s.length()];
	    for(int i = 0; i < s.length(); i++){
	        switch (s.charAt(i)) {
	            case 'M':
	                nums[i] = 1000;
	                break;
	            case 'D':
	                nums[i] = 500;
	                break;
	            case 'C':
	                nums[i] = 100;
	                break;
	            case 'L':
	                nums[i] = 50;
	                break;
	            case 'X' :
	                nums[i] = 10;
	                break;
	            case 'V':
	                nums[i] = 5;
	                break;
	            case 'I':
	                nums[i] = 1;
	                break;
	        }
	    } 
	    
	    int sum = 0;
	    for(int i=0; i<nums.length-1; i++){
	        if(nums[i] < nums[i+1])
	            sum -= nums[i];
	        else
	            sum += nums[i];
	    }
         
	    return sum + nums[nums.length-1];
	}
}

6 ms

運用 Hashmap:

class solution {
    public int romanToInt(String s) {
        Map map = new HashMap<>();
        map.put('I',1);
        map.put('V',5);
        map.put('X',10);
        map.put('L',50);
        map.put('C',100);
        map.put('D',500);
        map.put('M',1000);
        
        int result = map.get(s.charAt(s.length()-1));
        for(int i=s.length()-2; i>=0; i--){
            if(map.get(s.charAt(i)) < map.get(s.charAt(i+1))){
                result -= map.get(s.charAt(i));
            }
            else{
                result += map.get(s.charAt(i));
            }
        }
        return result;
    }
}

Categories
All 算法

做題筆記:Palindrome Number (Java)

題目描述:

給定一個整數 x,如果 x 是回文數,則返回 true

回文數指一個整數向後讀和向前讀內容相同。

Example 1:

Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.

Example 2:

Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

算術解法:

利用 Java 整數倒序計算:

class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        
        int ori = x;
        int p = 0;
        while (ori != 0) {
            p = p * 10 + ori % 10;
            ori /= 10;
        }
        
        return x == p;
    }
}

9 ms,超過 87.67% 的答案。

轉換為 String 的解法:

進階要求 Follow Up 竟然問了一句 Could you solve it without converting the integer to a string? 原來我想到的已經是進階方法了,常規解法是轉換為 String:

class Solution {
     public boolean isPalindrome(int x) {
         char[] nums = String.valueOf(x).toCharArray();
         int start = 0;
         int end = nums.length-1;
         while(start < end) {
             if(nums[start] != nums[end]) return false;
             start++; end--;
         }
        return true;
    }
}

19 ms,超過 19.48% 的答案。

Categories
All 算法

做題筆記:Two Sum (Java)

驚恐自己要找不到工作了,開始做題,記錄一下做題筆記。第一道,是刷題界的 Hello World —— Two Sum。

題目描述:

給定一個整數數組 nums 和一個整數 target,返回兩個數字的索引,使它們相加為 target

假設每個輸入都只有一個解決方案,並且不會使用相同的元素兩次。

可以按任何順序返回答案。

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Foreach 暴力解法:

第一次刷題,算法小白,只想得到這種方式:

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int [] empty = new int[2];
        int len = nums.length;
        for(int i = 0; i < len; i++){
            for(int j = 0; j < len; j++){
                    if (nums[i]+nums[j] == target&& i != j){
                        empty[0] = i;
                        empty[1] = j;
                        return empty;
                    }
            }
        }
        return null;
    }
}

果不其然,106 ms,超過了10%的答案,好歹是通過了對吧……

以前上課做作業時,都是秉持著能跑就行的態度,習慣很差,現在我開始認真考慮優化的問題了,也算是一大進步。

Hashmap 解法:

看了 discussion 之後,追求高效率,這道題是應該使用 Hashmap 的:

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int[] result = new int[2];
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        for (int i = 0; i < numbers.length; i++) {
            if (map.containsKey(target - numbers[i])) {
                result[1] = i;
                result[0] = map.get(target - numbers[i]);
                return result;
            }
        map.put(numbers[i], i);
    }
    return result;
}
}

3 ms,超過85%的結果。

Categories
All 譯作

《重慶破曉》樣章

PDF下載(初版)

本版本為初版,未經校对,存在筆誤,僅供試讀。

請在 Amazon 上購買支持最新修訂版。

Dawn Over Chungking

此書獻給 Chen San,Huan-Erh和Taiyün。

Contents

譯者序. 4

出版社前言. 6

1.歸家的決定. 7

2.日本. 9

3.香港. 10

4.香港. 12

5.飛向重慶. 13

6.雨中漫步. 15

7.北碚巴士之旅. 20

8.北碚的第一天. 21

9.鎮上. 23

10.傅嫂. 24

11.北碚生活. 25

12.首次轟炸. 26

13.首次轟炸. 29

14.鎮上. 31

15.煉乳和咖啡. 35

16.唐老闆. 36

17.柑子灣. 37

18.柑子灣. 40

19.防空洞生活. 45

20.嘉陵江. 47

21.榛木. 50

22.宋家的防空洞. 51

23.H夫人與她的家人. 53

24.第二次轟炸. 54

25.第二次轟炸. 58

26.轟炸之後. 61

27.防空洞生活. 63

28.北碚生活. 66

29.內陸老鼠. 68

30.縉雲山. 69

31.縉雲山. 73

32.石華寺. 85

33.獅子峰. 86

34.山間. 88

35.山中防空洞. 90

36.空襲舊事. 91

37.遊擊隊之母. 92

38.自家被炸. 96

39.空襲後的北碚. 98

40.離開北碚. 102

41.北碚的最後一夜. 104

42.重慶. 107

43.重慶. 113

44.夜襲. 116

45.拜訪委員長. 119

46.蔣委員長和蔣夫人. 121

47.八一九. 123

48.離開重慶的那天. 126

49.離開. 127

50.夢想必將實現. 128

譯者序

在瀏覽林語堂先生相關的資料時,偶然發現他的三個女兒曾合著過一本名為 Dawn Over Chungking 的作品,記錄他們一家在重慶短短幾個月內的種種經歷,並且沒有譯本(當時沒找到)。重慶故事?那怎能沒有一個中文譯本呢?遂萌發了翻譯全書的念頭,年輕人精力旺盛,一股「說幹就幹」的熱血。

翻譯到一半才意外發現,原來前人已經譯過,民國31年,一位叫林平的前輩譯過標題為《重慶風光》的版本,由大公書店出版。由於那本書本身也是舊書了,只找到幾家舊書店在售,中國對舊書的數字化工作做得又特別差,我並未讀過該譯本。後來我在《中國現代文學總書目》中查閲到該譯本的目錄,發現原文中出現的許多韋氏拼音或其他舊拼音方案,林平前輩並未考證,使得像是「縉雲山」錯譯為了「青雲山」,「石華寺」錯譯為了「西華寺」,更別說「柑子灣」這種小地名錯譯為了「康仔灣」,連我一個本地人都按照原文所說的六里路左右在地圖上找了好久。在資訊匱乏的年代,音譯錯誤並不鮮見,甚至曾出現將 Chiang Kai-shek 誤譯為「常凱申」的荒唐先例。令人憂心的是,後人竟有以訛傳訛之勢——曾見文章稱林語堂曾寓居「西華寺」,這顯然與史實不符。我對自己的考據有足夠的信心,即使出於糾錯這個意義,我也應該把自己的譯本繼續完成。

另外在《愛國作家林語堂:林語堂政治態度轉變之研究(1895-1945年)》一書中第五章的注釋第31條提到,林平前輩的翻譯是有錯誤的。第一篇中林如斯提到回國的理由,是「某種自私的」,但林平前輩譯為「為了些私事」,直接與原文意思不符了。回頭審視我的這一句翻譯,好在,意思沒錯。嚴復先生的翻譯之標準信達雅,我的譯本「信」應是沒問題的。當然文筆方面實在過於粗糙,無法與前輩相比。

作為一個非翻譯專業人士,我曾自恃英文不錯而大膽嘗試翻譯,結果卻是貽笑大方。這才領悟到,翻譯並非僅考驗英文能力,真正考驗的其實是母語的文字功底。翻譯是一項極其艱辛的工作,其難度不亞於寫一本新書。近年來,有個新詞叫「翻譯腔」,專指那些未能擺脫原文語言框架、顯得生硬且不協調的翻譯作品或外文影視字幕。我也曾以此為「迷因」,嘲諷過不少譯作。然而,當自己真正動手嘗試翻譯後,卻絕望地發現全文都充滿了翻譯腔。同時,我也了解到譯者的薪酬並不理想,這讓我愈發體會到譯者的不易。

談及本文翻譯腔的體現,原文三姐妹寫作,尤其喜歡用We做主語,於是我的譯本就一直在「我們我們」,似乎特別冗餘。另外一些像是「Oh!」語氣詞,如果要遵從原文體現出來,簡直是翻譯腔的典例,但我沒有擅作主張刪掉它們。

有幾處巧妙的雙關語記憶深刻,All Clear指的是空襲結束,「危險全部清除」而發出的一種信號,我直接譯成了「警報解除」。但原文中有一段提到過她們的複雜心情也隨之 All Clear了,這種巧妙的雙關完全打我一個措手不及,沒能寫出很好的譯法。

再回到內容中來,文中所說的那棟在北碚的房屋,現在政府將其定名為「老舍故居暨北碚文協舊址」並列入文保單位加以保護。該屋本為林語堂先生自行購置,演變為今名其原因是林語堂先生攜其家人來重慶定居的時間極短,他在離開將房屋轉交給當時在北碚辦公的中華全國文藝界抗敵協會,而老舍作為協會骨幹,隨後在此辦公數年。嚴格意義上說,此建築應命名為「老舍及林語堂故居」。

在北碚讀書時,這棟建築是我從地鐵站到校園的必經之地,對整個歷史背景都有了解時,彷佛就與她們站到了同一時空,縉雲山、北溫泉、復旦大學、乃至於嘉陵江對岸的那棟「鬼屋」,都是我曾實際拜訪過的地方,讀來饒有趣味。

可惜此書無緣出版,以個人身分難以取得版權,若要自費,費用高達約十萬元之巨。不過,若僅是自行刊載於部落格上,便沒有侵權的風險。正如開頭所說,北碚的故事怎能不講給北碚人聽呢?無論多少年後再讀到二戰期間的風雲變幻,心情都不會毫無波瀾。這部拙作《重慶破曉》謹此呈上,還望各位方家不吝指正,笑納這份微薄心意。

111年清明於北碚

出版社前言

林語堂的三位千金,為我們帶來了這篇關於她們重慶「朝聖」之旅的故事。兩年前,她在們的著作《我們家》(Our Family)結尾,真切表達了對戰爭的感觸及歸國的熱切渴望。如今,她們已如願以償,冒險飛越日軍防線,深入中國內地,並在那裡度過了三個月。這段期間,她們歷經四十次空襲,其中最猛烈的一次就發生在離她們不得不離開重慶的兩天前。她們萬分不捨地踏上歸途,只因父親林語堂先生需返回美國,繼續為中國發聲著書。

林如斯十七歲,林太乙十四歲,妹妹十歲。

1.歸家的決定

林如斯

過去三年,當我們享受著悠閒的異國旅行和自我放逐時,我們的同胞卻身陷苦難與鬥爭之中。我再也無法忍受這些思緒,無論如何都必須回國。或許這份衝動依然帶著自私的成分,但確實是時候回去了。

每當我在報刊雜誌上讀到一丁點關於重慶的消息,總是恨不得能了解更多,可獲取資訊的管道在哪呢?今日十行明日廿行罷了,根本無法滿足我的需求。每次刊登出照片更是一種奢侈的享受,但那種美好的感覺持續不了多久,一旦照片上的草葉都數完了,便無事可做了。

「親愛的,你不開心嗎?你現在身在異鄉,並非戰火中的中國。」我的回答當然不會是「開心」,卻也沒辦法直接說「不開心」,他們期待聽到一個合理的解釋。我又能怎麼解釋呢?我無法回答「不開心」,即使能,也沒人能理解我真正的想法。我只好匆忙給出一個含糊其辭的答覆,然後禮貌地走開。

嶄新的中國,已然巍然屹立於海的那一端,對我而言,卻仍蒙著一層神秘的面紗。每當我倦於學習,或是心緒激盪之時,腦海中總會浮現那片土地。這份思念對我來說是一劑良藥,它驅散了我的憤怒,帶來些許慰藉。更多,我想了解更多!

我聽過不少關於那個新中國的議論,褒貶不一。除了道聽途說和新聞報導,我對它一無所知,但我依然堅定地站在支持的一方。我討厭那些質疑、猜忌或嘲笑我們的人。每當他們發現一絲微小的紕漏或不足,便欣喜若狂地以此作為攻擊新中國的藉口。我常聽這些人為這場大戰中的小問題爭論不休,我心想,他們錯了。

正是這些自鳴得意的體面姿態,讓真正有需要的人得不到幫助。我無法對這些「體面人」直言:「幫幫中國!我們的同胞正在受苦,他們需要衣服、食物、藥品,幫幫那些保家衛國的戰士!我們的同胞應當得到幫助!」在這些「體面人」看來,這種話荒謬甚至幼稚。你必須這樣說:「中華民族為抵禦極權主義和日本侵略者的威脅而自衛,他們正遭受糧食短缺和醫療匱乏的痛苦,因此,一個生活在和平國家的公民有必要向中國提供一切可能的援助!」然而,當我費盡心力說出這番話時,前半部分大概已經被我遺忘,那些「體面人」也早已拋諸腦後。一段悅耳、對「體面耳朵」而言熟悉又舒緩的聲音,或許能讓他們勉強抓住最後幾個字,即使印象也十分微弱了。然後,經過數小時的深思熟慮,他們或許會決定向中國寄出十美元。天哪,讓我的國家獲得區區十美元,竟然需要如此冷靜、如此理性的給予?我很抱歉,帶著真情實感的平實話語,對他們來說是無法理解的。

他們能理解的語言,只剩下一個空洞的骨架,所有該說的都已經說了,而且能說得更快。我很清楚人們為何不願伸出援手——那都是自身利益在作祟,多麼可悲啊!那些用冠冕堂皇的語言寫成的呼籲書,就像一塊充滿了奇怪香料和薄荷的肉。如果吃的人還能記得那曾是塊肉,就已經非常幸運了。但肉本身的滋味,又哪裡去了呢?

這種體面,或許能被稱為穩定或正常,它確實構成了我們所說的「正常生活」。然而,對於更宏大的理想和美好的夢想來說,這卻是多麼巨大的阻礙啊!我曾和一位朋友討論此事,她提出一個關於自我保護的觀點:人類正是因為這種自利和懶惰才學會了生存;在我們身體的系統裡,快速遺忘痛苦是生存的必要條件。過去我傾向於同意她的看法,但現在我堅決不同意。我堅信,如果這個時代的每個人都能拋棄私利,努力終結所有的衝突和折磨,世界就能有所改變。這是一個不願輕易忘記痛苦的時代,我看到身處這種「穩定」或「正常」生活中的普羅大眾,是如何將慈善活動和援助有需要的人視作兒戲。對他們而言,這不過是另一個玩具,另一種增添社會瑣事和嫉妒的方式。在慈善舞會上跳舞該有多痛苦啊!然而對大多數人來說,這卻是一種美妙的消遣。以「甜蜜的慈善」之名處理舊衣服,又是多麼的便捷啊!

我受夠了!我將去尋找真正的慈善和人性,我知道我會在重慶找到它——而且我確實找到了。

回家——世上還有什麼比這更美好的旅程呢?在國外待得越久,新的思維和觀念固然逐漸形成,但我們對中國的印象卻反而越來越模糊。我們絕不能讓中國的形象在腦海中淡化,這是我們決不允許的。因此,我們選擇了回家。這一次,我們不是要回到舒適的舊居,而是踏上一片正在掙扎的故土。我們將前往家人從未涉足過的地方——中國的心臟地帶。戰前,我們對四川的印象僅止於壯麗的峽谷、激烈的內戰以及鴉片,這些都像是一個外國人過時的片面認知。總之,這次旅程對我們來說是一次嶄新體驗,但我們依然將其視為回家,因為四川是中國的一部分,在中國的任何地方,即使是西藏的山谷,都可以是家。

我時常思念重慶,竭盡全力地去想像她,可惜幾乎都是徒勞。由於此行是回家而非遊歷,收拾行李的方式也大相徑庭。我們像士兵般堅定站立,昂首挺胸,向朋友們驕傲地告別。目標:重慶!

我不會用那種半諷刺的微笑或冷漠的語氣來講述我的故事,儘管那似乎是吸引聽眾、贏得信任的好方法。我只是不想對自己嚴肅看待的事情表現得毫不在意,也不想假裝自己是個經歷歲月洗禮、情感早已磨平、不再為任何事物感到悲喜的老人。

2.日本

妹妹(林相如)

「日本人」[1]和「日本」這兩個英文單詞,是世上最糟糕的詞彙。你不能怪造字的人有所偏頗,因為日本人就是那副德性,完全配得上這樣的稱謂。我真希望可以去轟炸日本天皇,然後讓火山吞噬天皇和日本,那必將是我此生最快樂的一天。如此一來,再也不會有人想起那群企圖征服世界的侏儒了。我寧願死,也絕不做日本人的奴隸。你休想強迫我愛上那個所謂的「櫻花之國」,哼,這個稱謂,根本就是他們山寨來的!他們是抄襲者!我最喜歡的日本人,就是日本叛徒。戰爭結束那天,我準備生一把大火,燒光所有日本貨。到那天,自然只會剩下一些苟活的日本婦女和兒童,我們也不必為難她們,就讓她們獨自埋葬日本吧。我會跑到人們家裡,分發那些用來插在窗外的旗子,任憑空襲警報和鑼鼓聲響徹雲霄。誰在乎呢?哦!那一天,沒有人可以規定我該做什麼。我要穿上紅色的衣服,和農民們一起跳舞。

3.香港

林如斯

這就是香港嗎?我帶著先入為主的觀念踏入九龍灣,也帶著同樣的印象離開,畢竟只住了兩個星期,這樣的想法倒也合情合理。是的,這的確與我想像中的一模一樣。

清晨時分,水手拋錨入港,在晨曦的微光下,香港顯得純淨無瑕。最先看到中國人活動的跡象,是廣東婦女和孩子們乘著舢板,劃向巨大的汽船。婦女們身著深色衣裳,舢板棕黑,在水面上勾勒出剪影。男孩們像在夏威夷那樣跳入海中撿拾硬幣,女孩們則拿著綁在竹竿上的網兜來收錢。舢板上還有嬰兒和小女孩,他們都瞇著眼睛,仰望著那高大宏偉的汽船。儘管海面波濤洶湧,舢板搖搖晃晃,孩子們卻毫不在意。船上的每個人都倚在欄杆上觀望,除了少數喜歡在甲板上散步的中國人。

一股奇特的感覺籠罩著我——家,一個戰火中的家!我記得曾讀到過舢板被轟炸沉沒的報導——這個念頭一閃而過,很快就被即將再次見到親人的興奮所取代。碼頭上人潮湧動的中國人,對面滿載中國人的渡船,以及那頭同樣擠滿中國人的香港街道——我的同胞們!他們或汗流浠背,或閒庭信步,或高聲呼喊,或焦急等待,他們都是中國人。中國人的臉龐,中國人的身形,中國人的眼睛,中國人的髮色!我可以看,看,不停地看。無論白天黑夜,他們都是中國人。我可以盡情地看,補償過去幾年見到的所有外國人。是的,我會一直看,直到我不再覺得中國人的臉有任何奇特之處,直到我對看見他們習以為常,那時我就心滿意足了。那時,我才算真正回歸,因為我不再對中國人的面孔感到新鮮。即使這裡不是中國的內陸,但至少這些人,是我的同胞!

在香港的兩個星期裡,服飾、美食和商店似乎治癒了我們的思鄉病,讓我們的身心得以徹底放鬆。與不同的親戚見面,和表親們聊到深夜,這些都非常有趣,他們真的絲毫未變。我們整天都在聊天,如果我不說話,也會有人交談,發出我只有在夢中才能聽到的聲音。這裡到處堆滿了箱子,無論走到哪裡都會遇到,甚至不小心會用膝蓋撞到它們。把我們的東西都丟在箱子後面吧,有時我真希望把自己關進一個箱子裡,以遠離所有這些箱子。每次出門,似乎都像是在趕辦一件要緊事,因為在香港,一切都顯得格外重要,我們必須爭分奪秒地做每一件事,彷彿一切都會稍縱即逝,永遠消失。所以我們緊緊抓住香港的一切,直到被所有這些事務壓迫得喘不過氣來。

我們要搭飛機,必須攜帶足夠的衣服,但又不能超過行李限額。對某些人來說,這個限額似乎太低了,因此我們只帶了一雙拖鞋、睡衣和兩件內衣。還有一些人認為完全可以塞進三件衣服,但我們得為其他東西留出足夠的空間。媽媽的體重計這次可派上用場了,再沒人抱怨它。我們似乎裝進了很多東西,或許也沒那麼多,總之結果自然是行李超重了。稱重後,我們拿出了一些東西,又硬塞進去一些別的。實際上,我也不知道行李最終是超重還是達標,也不知道我們到底放了些什麼,又拿出了些什麼。我們預計大件行李會在三個月後經印度支那抵達重慶,但由於即將爆發的印支危機,它從未被送入中國——不過這是後話了。

我們在香港的生活就像我們的行李一樣,在這兩個星期快要結束時,我們情緒緊張,只能聽天由命。

混亂瀰漫著整個香港。街道上,穿著無袖服裝的時髦女孩與絕望的難民擦肩而過。有人在空調茶室裡喝著檸檬水,吃著巧克力蛋糕,聽著假聲藍調,而就在幾個街區外,有人卻露宿街頭,無家可歸。整個城市被劃分為一個光鮮的「前台」和一個龐大的「後台」,後者佔據了更大的面積。街道上人頭攢動,最令人心痛的,是看到一個眼睛被燒得紅腫的嬰兒可憐兮兮地坐在母親身邊的梳妝台上。如果中國人需要憐憫,那會是在香港,而不是在內地。這是一個窮人更覺貧窮,流浪漢愈加迷茫的地方。即使在最上流的社會和最隱秘的角落中,也是一片雜亂無章。這是一個紊亂的租界,東西方的品味在此交匯,東西方的怪癖在此融合,東西方多餘的東西也悉數混雜在一起,一切都被攪拌成五彩繽紛、令人作嘔的奶油溫醬。

香港有四類人。首先是那些在香港土生土長,從小浸潤在香港環境中的人,無論有沒有戰爭,他們都只對商業上的成功感興趣。試想一個不同的情境:一個出生在江蘇的人,他的商店被日本人燒毀了,那麼他自然會憎恨日本人,個人利益迫使他愛國。但目前為止他並沒有真正受到一絲傷害,所以他仍然經營著自己的生意。第二類是在香港擔當特殊職責和工作的人。第三類是選擇南逃而沒有北逃的廣州難民。第四類,那些明明知道戰爭,卻依然照常生活的人,彷彿世上從未開過一槍。內地人談及香港人時,指的就是他們,那絕非什麼讚美之詞。

我不想在香港多待一天了,我寧願住在其他國家,住在每天都遭受空襲的我的祖國,就算那裡很沉悶很混亂。

4.香港

林太乙

香港,一個連在哪裡吃飯、和誰吃飯都早已被安排好的地方。我們有許多親戚特地從廈門和上海趕來看望我們。當我們的船抵達九龍時,我見到父親和母親兩大家族裡的各式姑婆姨嬸,還有一個小侄子,那場面真是令人震驚。由於我們很久沒見,許多人在外表和行為方式上都有了巨大變化,我和妹妹尷尬地用手肘輕推彼此。

香港之所以令人感到可怕,是因為世界各地的人都匯聚於此,而大多數在港的中國人都已被西方的規矩和禮儀所「醃漬」——意思是他們的行為方式深受西方影響。

在我們準備啟程前往心之所向的中國內陸前,我們開始預購物資。有人告訴我們重慶很多東西都買不到,於是我們在行李箱裡塞滿了洗髮水、肥皂、餅乾、糖果、鹹菜、牙膏、牙刷、香煙等大量物品。這些行李被送往海防,並預計通過印度支那鐵路運回,但最終它們都沒有抵達。我們大部分時間都在整理行李,所幸有這麼多表親幫忙。

哦,香港!我們為前往重慶做好了所有準備,只剩下最後的等待。我對空襲一無所知,但我知道自己必須去那個魂牽夢縈的重慶。

5.飛向重慶

林太乙

大約是晚上九點,一如每次離別前的慣例,旅客們蜂擁而至,互道珍重。父母臉上掛著僅存的笑容,卻一言不發,他們仍在為最後關頭仍在打包的行李而擔憂。空氣中瀰漫著「離別」二字,它被小心翼翼地包裹在每一句話中,顯得格外沉重。

我迫不及待地想去重慶,離開這座空蕩蕩的城市。我們都太疲倦了,開始打起瞌睡。

我和媽媽相擁而眠,皎潔的滿月高高懸掛,光芒灑滿我躺臥的房間。對於即將前往重慶——我們的戰時首都——我感到無比興奮。我絲毫不知道空襲是什麼樣子,但我並不害怕。

夜深人靜,時鐘滴答作響。生活似乎總是如此奇特,人們為何會為了一片土地而相互爭鬥。人們如何戰鬥,如何生活,如何嫉妒,如何抱怨,如何活得彷彿永遠不會死去,彷彿他們是不朽的,然後繼續戰鬥。他們不停地爭鬥,卻忘記了享受生活。人們在年老時才湧現出旺盛的好奇心,在他們去世時才剛學會足夠的東西來享受生活。死後一定有著什麼吧,否則人不可能擁有這種求知欲,能容忍學夠了就死去,知識隨之化為烏有。

人們為何拼命工作,卻從未真正生活過?人們為何終其一生為金錢操心,試圖不讓一分一毫溜走?

鐘聲敲響了一下,我們計劃兩點半起床,三點到機場。但沒有人知道飛機的具體起飛時間,畢竟飛越日占區的危險重重。

月光比想像中更亮,這顆高懸的明月,予人以沉靜和憂傷。

漫長的幾小時彷彿過去了好幾年,我們等待著,等待著,時間來到兩點半。

鬧鐘響起,我們打著哈欠,伸著懶腰起床,幾乎忘記了起床的目的。

我們開車穿過香港這座死氣沉沉的城市,我永遠不會喜歡它。商店大門緊閉,窗戶上釘著木板。

我們終於到了機場。這是我第一次如此近距離接觸飛機,我開始為自己這個「鄉巴佬」感到尷尬。我們的口袋裡塞滿了口香糖,有人曾說口香糖在飛機飛到很高時會派上用場。我們從咖啡店一直跑到海關辦公室,稱重和檢查都在那裡進行。來回奔跑的過程中,口香糖不停地從口袋裡掉出來。這是一個相當大的機場,月光讓它看起來像是被雪覆蓋了一樣。我的肚子開始咕嚕作響,最後甚至痛了起來,但我真的特別興奮。

機組人員說現在月亮太亮了,不能起飛,我們必須等它再黯淡一點。

微風讓每個人都興奮起來,感覺很奇特,卻又無法形容自己究竟是什麼感覺。

我們直到四點半才起飛,這時月亮已經被雲層遮住了一部分。那些堅持到最後一刻的親戚們開始向我們揮手,但揮得太快了,就像以往一樣,我們的手和胳膊都酸了。

當飛機開始飛行時,我感到一陣暈眩,腦海裡只有一件事清晰無比——我正在前往重慶。隨後,我便打起了瞌睡。


[1] 在林太乙所著《林家次女》,稱此人為「國榮兄」。譯者注。

Categories
All 雜文

翻譯嘗試暨譯者序

在瀏覽林語堂先生相關的資料時,偶然發現他的三個女兒曾合著過一本名為 Dawn Over Chungking 的作品,記錄他們一家在重慶短短幾個月內的種種經歷,並且沒有譯本(當時沒找到)。重慶故事?那怎能沒有一個中文譯本呢?遂萌發了翻譯全書的念頭,年輕人精力旺盛,一股「說幹就幹」的熱血。

翻譯到一半才意外發現,原來前人已經譯過,民國31年,一位叫林平的前輩譯過標題為《重慶風光》的版本,由大公書店出版。由於那本書本身也是舊書了,只找到幾家舊書店在售,中國對舊書的數字化工作做得又特別差,我並未讀過該譯本。後來我在《中國現代文學總書目》中查閲到該譯本的目錄,發現原文中出現的許多韋氏拼音或其他舊拼音方案,林平前輩並未考證,使得像是「縉雲山」錯譯為了「青雲山」,「石華寺」錯譯為了「西華寺」,更別說「柑子灣」這種小地名錯譯為了「康仔灣」,連我一個本地人都按照原文所說的六里路左右在地圖上找了好久。在資訊匱乏的年代,音譯錯誤並不鮮見,甚至曾出現將 Chiang Kai-shek 誤譯為「常凱申」的荒唐先例。令人憂心的是,後人竟有以訛傳訛之勢——曾見文章稱林語堂曾寓居「西華寺」,這顯然與史實不符。我對自己的考據有足夠的信心,即使出於糾錯這個意義,我也應該把自己的譯本繼續完成。

另外在《愛國作家林語堂:林語堂政治態度轉變之研究(1895-1945年)》一書中第五章的注釋第31條提到,林平前輩的翻譯是有錯誤的。第一篇中林如斯提到回國的理由,是「某種自私的」,但林平前輩譯為「為了些私事」,直接與原文意思不符了。回頭審視我的這一句翻譯,好在,意思沒錯。嚴復先生的翻譯之標準信達雅,我的譯本「信」應是沒問題的。當然文筆方面實在過於粗糙,無法與前輩相比。

作為一個非翻譯專業人士,我曾自恃英文不錯而大膽嘗試翻譯,結果卻是貽笑大方。這才領悟到,翻譯並非僅考驗英文能力,真正考驗的其實是母語的文字功底。翻譯是一項極其艱辛的工作,其難度不亞於寫一本新書。近年來,有個新詞叫「翻譯腔」,專指那些未能擺脫原文語言框架、顯得生硬且不協調的翻譯作品或外文影視字幕。我也曾以此為「迷因」,嘲諷過不少譯作。然而,當自己真正動手嘗試翻譯後,卻絕望地發現全文都充滿了翻譯腔。同時,我也了解到譯者的薪酬並不理想,這讓我愈發體會到譯者的不易。

談及本文翻譯腔的體現,原文三姐妹寫作,尤其喜歡用We做主語,於是我的譯本就一直在「我們我們」,似乎特別冗餘。另外一些像是「Oh!」語氣詞,如果要遵從原文體現出來,簡直是翻譯腔的典例,但我沒有擅作主張刪掉它們。

有幾處巧妙的雙關語記憶深刻,All Clear指的是空襲結束,「危險全部清除」而發出的一種信號,我直接譯成了「警報解除」。但原文中有一段提到過她們的複雜心情也隨之 All Clear了,這種巧妙的雙關完全打我一個措手不及,沒能寫出很好的譯法。

再回到內容中來,文中所說的那棟在北碚的房屋,現在政府將其定名為「老舍故居暨北碚文協舊址」並列入文保單位加以保護。該屋本為林語堂先生自行購置,演變為今名其原因是林語堂先生攜其家人來重慶定居的時間極短,他在離開時將房屋轉交給當時在北碚辦公的中華全國文藝界抗敵協會,而老舍作為協會骨幹,隨後在此辦公數年。嚴格意義上說,此建築應命名為「老舍及林語堂故居」。

在北碚讀書時,這棟建築是我從地鐵站到校園的必經之地,對整個歷史背景都有了解時,彷彿就與她們站到了同一時空,縉雲山、北溫泉、復旦大學、乃至於嘉陵江對岸的那棟「鬼屋」,都是我曾實際拜訪過的地方,讀來饒有趣味。

可惜此書無緣出版,以個人身分難以取得版權,若要自費,費用高達約十萬元之巨。不過,若僅是自行刊載於部落格上,便沒有侵權的風險。正如開頭所說,北碚的故事怎能不講給北碚人聽呢?無論多少年後再讀到二戰期間的風雲變幻,心情都不會毫無波瀾。這部拙作《重慶破曉》謹此呈上,還望各位方家不吝指正,笑納這份微薄心意。

111年清明於北碚

Categories
雜文 All

關於感情利益,你需要了解的

在談上一篇《與女利主義的共處》時,我已經點明了感情中最致命的爭議惟財產而已。現實中,也有法院要求女方返還給男方戀愛期間開銷 84 萬的真實判例(徐某、俞某婚约财产纠纷二审民事判决书),朋友直說這種例子等於是詐騙了,肯定得這麼判。市井中既有「感情騙子」一詞,以經營關係使詐騙之實並不新鮮。

既然利益無處不在,也有被詐騙的風險,就需要延伸去講講一些如何界定利益的法律工具,比如「婚前協議」。值得一提的是,這個主題特別反中國價值觀,中國人那就「談錢傷感情」了嘛,親朋好友結婚你聽誰立過婚前協議了?你不祝人家白頭偕老,講這些東西,那不是挨罵嗎。另一方面,國人法律意識淡薄,卻是不爭的事實。所以我基本沒看到這方面有價值的中文文章,嘗試自己開創性地啟蒙,但由於本人自身也不能說特別了解此主題,講得不好多請包涵。

這還得從一則平日的笑談中說起,我打趣地跟朋友說,能錄入維基詞條的公眾人物,沒幾個沒離過婚。可能在社會資源越豐富的人眼中,婚姻就越不是件「人生大事」。即使普通人之間,中國離婚率也年年高漲,某種程度上猜測,西方 prenup 如此盛行,與高離婚率是有直接聯繫的。

需要注意的是,本文是在探討一個法律問題,很多是西方司法的先進經驗,壓根在中國可能都沒有對應更別說適用,畢竟中國司法是一個搞出「離婚冷靜期」的系統,沒啥值得期望的,我們只能朝著一個好的方向去學習。

最常見的,也是很多國人都聽過的,就是上面提的婚前協議(Prenuptial Agreement),英文簡稱為 prenup。內容則是對婚後的權益所作的協議,商議雙方的個人及共同財產在離婚時如何分配,以及一些權利和義務的說明。承上文維基的笑談,港臺在司法方面肯定更進步一些,我是有搜到幾篇繁體中文文章的,但也還是和西方的差距很遠,而且他們似乎有一個誤區就是有錢人才需要婚前協議,似乎有錢人容易離婚這件事已經成為一種刻板印象了。

當然涉及更多的法律問題,例如是否能執行,本文不做探討,只做掃盲。掃盲的目的是為了讓你知道文明世界有這些東西,你也應該去做適當考慮。比如即使在香港法律中,婚前協議也不可被強制執行,它不能淩駕於法庭在離婚案件中可以對家庭資產作出配置的寬泛自由裁量權。[1]中國情況更甚。不過我也找到一篇文章介紹中國民法典框架下如何簽訂婚前協議,提到中國法律層面對「婚前協議」未明確其概念,但有辦法形成一些同等法律效力的文件,可以細讀。[2] Prenup 在中國的問題仍舊是沒有群眾基礎,而不是沒有方法簽署。

Matrimonial regime,夫妻財產制。婚前協議的歷史不長,但它作為分割財產的法律基礎的歷史就長了,惟亦於地區不同而差異極大。默認情況,法院承認的是 Separate property systems,下面有數種分支。首先是 Separate Property,獨立財產,此種情況下所有的財產,無論是婚前還是婚後,都是單獨擁有;Separate Property with Equitable Distribution,公平分配的獨立財產,在這種制度下,當婚姻期間獲得的大量財產為配偶一方所有時(例如,所有婚姻財產的所有權僅在丈夫名下),法院將在配偶死亡或婚姻解體時對較富裕的一方的財產進行公平分配。這樣做的目的是為了防止寡婦和離婚者及其未成年子女因較富裕配偶的死亡或離婚而陷入貧困;南非的 Accrual System 和加拿大的 Deferred Community Property,婚姻財產在婚姻期間是單獨擁有的,但在婚後(離婚、配偶死亡),淨資產作為共同使用的財產被集中在一起並進行分割;美國的 Tenancy by the Entirety,在這種制度下,配偶被視為一個人,各自對標的財產擁有平等的所有權。在美國的一些州,TBE 僅限於不動產(例如,夫妻以整體租賃者的身分取得家庭住房的所有權),而其他州則使其既適用於不動產也適用於個人物件(例如,夫妻也可以以整體租賃者的身分取得家庭汽車的所有權)。除了默認的 Separate property systems 之外,還有 Community property systems 等形式,可自行查找深度閲讀,此處不再贅述。

Voidable Marriage,可撤銷婚姻,出現於早期的教會法院,婚姻一方沒有有效同意時可以提出撤銷,使婚姻廢止(Annulment),常見的原因有:脅迫、走眼、醉酒或精神缺陷。婚姻廢止(Annulment)不等於離婚(Divorce)。

這些都還是建立在傳統的 Marriage 之上,繼續掃盲一些不常見的類型,Cohabitation Agreement,可以直譯作同居協議。功能和內容其實和 prenup 的差別不大,同樣都是對彼此的權利和義務的界定以及財產的保護。這就很能保護一些戀愛之中的非婚姻的關係,就好比開頭引用的那一則判例。當然,Cohabitation Agreement 能出現的背景也完全不同,Cohabitation 通常不是指字面意思上,兩個小情侶住到一起了,而是指一種長期的狀態,婚姻之實而無婚姻之名。同樣的,一些國家的法律是給予了 Cohabitation 特別地位的,比如挪威就是將 Cohabitation 定義為在一起生活五年以上,所以才會相應地出現 Cohabitation Agreement,當然,這也是完全不可適用於中國的東西。

FindLaw 網站上列舉了 Cohabitation Agreement 應該包含的一些基本內容[3],也適用於婚前協議:Property accumulated during the relationship (關係期間積累的財產)、Property acquired by gift or inheritance (通過贈予或繼承獲得的財產)、Property from before the relationship (關係前的財產)、Expenses (開支)、Separation or death (關係破裂或死亡)、Dispute resolution (糾紛解決)。

Registered Partnership,或者 Domestic Partnership,可直譯為註冊伴侶關係。很大比例,Registered Partnership 和上述的 Cohabitation 其實是針對同性伴侶甚至開放式關係所形成的法律保護條例,這方面自然以北歐最為先進。比如阿姆斯特丹市政府網站上就提到:如果您是註冊伴侶,您幾乎享有與已婚夫婦相同的所有權利。條款和條件、費用和程序是相同的。然而,並非世界上所有國家都承認註冊伴侶的地位。[3] 還有一個非常類似的概念,稱之為 Civil Union,民事結合。一般認為民事結合是和婚姻關係完全相同的,婚姻是更具傳統和宗教含義的契約,而 Civil Union 完全是建立在民事法之上,故得此名——以簽署民事伴侶關係文件形成,以解除文件告終,極其「理性」。

如果起草一紙協議就會破壞「浪漫」,大抵也不是我的理想對象了。如此理性,未嘗不可,這也是想寫這篇文章的初衷。

References

[1] 趙、司徒、鄭律師事務所. (2021, February 25). 香港婚前協議概要. Retrieved March 7, 2022, from url

[2] 刘永斌律师. (2020, July 18). 民法典框架下如何签订婚前协议?. Retrieved March 7, 2022, from url

[3] FindLaw’s team. (2018, November 13). Cohabitation Agreements. Retrieved March 7, 2022, from url

[4] Gemeente Amsterdam. (n.d.). Registered partnership. Retrieved March 7, 2022, from url

Categories
All 雜文

與女利主義的共處

很遺憾我終於領悟了感情中最致命的爭議的確是錢。雖不是第一次聽到這個說法,但卻是第一次表達認同。

大夢初醒,不得不讓我開始再次審視「田園女權」或是「女利主義者」是如何在包裝自己。

我曾經在《中國女權觀察》一文中就早已剖析到,經濟獨立才是女性獲得地位的標誌。然而當我真的親耳聽到「讓我付錢其實算我的一個雷區,男生就該出所有錢。」這種世紀金句後,驚耳駭目,至今未得平靜,可謂是患上了小仙女 PTSD 。

此等明言追求利益之語,無蘊含任何平等之理,謂之女利者爾。女方到底是在找提款機,還是在找男朋友,我是不得而知。況且女方自詡是為爭取女性權益盡心盡力,亦稱認可我的觀點,喜歡我的文章,即上引之文也已讀過,一時我竟不知她是否在反串。

近來我瀏覽不少相親平臺,像是微博的拯救大齡二次元,只是想擁有更大的樣本去概括女性的基本要求和思想——其實大家都很正常。

川渝地區向來以女性地位高而美名在外,我就看見一位重慶的女性投稿人在戀愛觀中寫到:「男生也是爹媽的寶貝,也是作為一個獨立的個體長大,所以我不需要你一味遷就我,心疼包容都是相互的。」亦提到禮物方面應是互送,且她會送價值相等的東西。家鄉的妹子,煞是動人。

一位微博網友的擇偶要求

當然我也不搞地域黑,來看看一位廣州女性投稿人,她的老鄉,是怎麼說的。總體上,她還是要求男性應當大方,限定在財力範圍內即可。她的故事,是遇上了某個前男友,為他自己很捨得花錢,卻不肯在她身上花錢。我必須附議,這是大忌,我的情況恰恰相反,我甚至自己在家只吃券後三塊的外賣來省錢,和她在一起時請吃高端日料,從未有怨言。這位投稿人還補充到,當然如果你本身是很節儉的人,我會陪你一起節儉,這就是她對財力範圍的包容及理解。所以說縱觀下來,大家都很正常。

相反她倒是故事中的那類人,頻繁給自己買了很多好東西,卻只會一直對我說沒錢,異地期間一次沒來找過我,都是我找她。她「沒錢」期間買的每件東西,都比往返機票來得貴。我直言這個問題之後,她的回答是:「這麼便宜那你還不幫我買了?」男生一定得心疼女孩子,每次搶奪輿論高地,都快得驚人,不止這一個方面。

後來有女性友人讓我看豆瓣小組娛樂,討論中常常會出現一個「摳男」的詞,指代不合時宜的極端節省以及本身富裕但不肯為女方付出的人。很顯然我面對她時從來沒有「摳」過,更不是後者,她卻仍不滿意,暴露出了貪婪本性。

在我動想分手念頭最重的時候,聽了我故事的好友是這麼評價的:

總感覺她是在傳統女性和現代女性這兩個角色之間掙扎。

某友

一句非常委婉的說辭,我翻譯一下,這叫「縫合怪」。既想好處收盡,又不想承擔任何責任。關係在她們面前只是消遣,從來不是責任。

把這個矛盾推上頂峰的話題,就是彩禮,我平生厭惡至極的陋習。而我後來發現,因這個話題而破裂的關係,不在少數。感情中最核心的組件,唯錢是也。

一個「進步女性」隔三岔五就把彩禮掛在嘴邊,令人匪夷所思。

彩禮是什麼東西呢?男女結婚時,新郎或其家庭給予新娘父母的一部分金錢、財產或禮物。從人類學角度來看,在古代時彩禮是一種市場經濟行為,用以交換新娘家庭所損失的勞動力,及賠償她家庭中直系親屬的缺失。這也是大多數反彩禮的人會提到的一點,彩禮是「賣女兒」的陋習。

她號稱要和我一起移民,我一句話就嗆到她啞口無言:「加拿大人不要彩禮。」難道支女要自比中國女權已經進步到遠勝北美了?我想來不屑於用「支女」這種侮辱性的表達,今日確實想破戒了。活生生的典例,根本沒學到西方女權平等的精髓,不知在何處看了田園女權的東西在瞎起鬨。

同理,一些嫁給外裔的女性,哪怕是在國內生活的,也隻字不提彩禮了,知道只會自討沒趣。這種雙標才是最令我寒心。硬要讓我簡介一番自己的話,除了這身皮還是小黃人,再無其他東西是黃的了。跟我也別談彩不彩禮的話題,如果有人談了,只能說明此人根本沒有真正了解我。我在復盤的這段時間也得出了結論,事實如此,那個人從未真正了解我。

讓我們回到上文提到的豆瓣小組,其中不乏支持彩禮的用戶,我來一一駁倒謬論。

核心論點一:彩禮是對女性的生育補償。其實還滿有道理的,國男就吃這一套,國男滿口都是生育,但她們顯然挑錯了對象,我豈能跟國男是一批人?生育於我而言無關緊要。況且生育率的數據大眾都能看見,年輕女孩個個都說不生孩子要丁克,她也是其一,既然我們早已達成了共識,「生育補償」一說不是不攻自破嗎?想要生育補償的小仙女們就去找國男吧,一個願打一個願挨,婚姻本來就只是一個市場。

核心論點二:彩禮是買斷的冠姓權。我承認也有道理,但其實我跟上述態度一樣,從來不在乎這些東西,孩子要跟女方姓無所謂啊。任正非三個子女三個姓,越是厲害的人越不會在意這些細枝末節。

核心論點三:彩禮是遠嫁補償。這就回到市場經濟行為的那一段表述了,這是女方家中少了一人而索要補償的「買賣人口」行為。時至現代了,交通亦尤便利,回誰家都可以,兩頭兼顧。而回家無非指的是過年而已,當代現狀,我想大多都是小兩口在某個大城市打拼,離雙方家庭都不近。況且以此邏輯,若是贅婿,反倒是女方該付彩禮給男方吧?我聽聞確實有地區持有此規矩,如果身處這種規矩不雙標的地方,我甚至可以贊同這一點。

上述三點有一個共通點,就是我明示我不要孩子、冠姓權、可以入贅之後,她們能淡定地回一句「那我不要你的彩禮了。」嗎?這些論點究竟是她們的真實論點,還只是套錢的藉口呢?尤其是第三點有親身體驗,我和她曾聊到過,我提及我可以婚後去你家,她並沒有鬆口,仍然堅持索取彩禮。

講個小插曲,日本贅婿,多出現在獨女家庭,岳父母真的是把贅婿當成是親兒子來對待,這位贅婿到時候會繼承女方家庭的家業財產。小仙女們聽到這類贅婿,怕是覺都睡不着吧?這可是過來搶錢的,她們勢必不讓男方入贅。敢動我的利益,那怎樣都不行。當然,我保留對日本這種狀況的看法,只是一則隨口一提的小故事。

豆瓣上更有甚者開始打共情牌,說我一個男的都覺得該付彩禮,你試想你以後的女兒你會不要彩禮嗎?聽得我都快笑了。我若會生女兒,說明我已經移居自由世界,我的女兒也將是一個在自由世界長大的人,我的答案是:確實不要。

哪怕我現在沒身處自由世界,在我的家鄉,重慶,也是沒有彩禮一說的。之前網路盛傳彩禮地圖的 meme,重慶赫然寫著 0 元,也曾是熱門話題。現在來了一個人,非得和我一個即將移居自由世界的重慶人扳彩禮,大概也只有說一句不合適而收尾吧。在我聽來,這就跟中國人疑惑為什麼不把拜登照片貼白宮門口的新蘇聯笑話一樣可笑,充斥著以己度人的鹽鹼地思想。

前幾天看見這樣一張截圖,當然出自著名的段子論壇,真實性存疑:

一張網傳截圖

如果屬實的話,就太具有諷刺性了。只能說明真正要女方出彩禮的時候,她們自己也是不願意的,跟入贅的狀況如出一轍,她們真正的目的,只是想要錢。

原生家庭也能噁心到另一種程度,即是最近發酵的一個事件,B站一位寵物博主,女方家長要求 50 萬彩禮,不給不放人,強行帶走女方並毆打了當事人。明明也能碰見戀愛觀正常的女性,攤上這樣的原生家庭,也是另一種悲哀。以前也常有男方貸款給予彩禮的事件,這種情形下,女孩子嫁過去不就是一起還債的嗎?家庭能無理到此般地步,實在難逃其咎。彩禮只會在惡性社會事件下,名聲越來越臭。

一點象徵性的彩禮,討個彩頭,當作一項傳統習俗賦予一點儀式感都還好,怕就是怕這種貸款都得付的天價彩禮。可惜的是,我遇見的這位女利主義者是天價彩禮的代表,我們一起參加過她同學的婚禮,那對夫婦的情況是女方未婚先孕,她再次留下的金句是:「彩禮只給了幾萬,一定不能未婚先孕,不然彩禮就要不到高價了。」——這就是她對一位好友婚姻的概括和感想。好在我也得到了女性友人的共情,嘲諷她是在明碼標價。

至於天價彩禮的標準究竟為何,2021年4月7日,中華人民共和國民政部指定了十五個縣市區作為全國婚俗改革實驗區,同年9月22日,再新增 17 個第二批全國婚俗改革實驗區,明確要「打擊天價彩禮」。

32個全國婚俗改革實驗區

以其中河南省商丘市寧陵縣為例,新的村規民約倡導彩禮不高於 3 萬元。

當然,人人都知道這是空頭支票。一來,一些天價彩禮最嚴重的地區根本沒有上榜,反倒川渝這些本來就幾乎沒有彩禮的地區有納入名單,根本是一場政治戲。二來,不會真有人因為彩禮超過規定而遭起訴,我的 ex 就是超過規定的天價彩禮代表,我會因此起訴她嗎?對正常人來講,起訴完也不必結婚了,實驗區的獎懲措施完全沒有效力。

後來因彩禮吵太多次了,她開始找藉口,說這是考驗心意,這是我特別反感聽到的一個理由。錢能考驗什麼心意呢?一定要讓男方傾家蕩產才叫考驗心意?面對富二代,你要開多高的彩禮來考驗心意呢,50 萬甚至 500 萬?即使 500 萬的天價,富二代都能再拿出來 5000 萬包十個情婦,這考驗不了任何心意。除非你也開一個讓富二代也得貸款才能搞定的價,但我不相信誰會蠢到接受。——事實上,支女不會為富二代老公再包了十個情婦而憤怒,因為她們已經撈夠了利益,為情婦放風都沒問題,利益足夠,萬事皆可。這是真正的物化自己,與女權背道而馳。花每一塊錢對每個人的效用不同,心意也體現在方方面面,感受不了我的心意就拉倒吧,好像弄得真非你不可似的。再者還是一個雙標問題,人人常說雙向奔赴,一個異地時一次沒來見過我的人,那麼你的心意又在哪呢?我絲毫未曾感受到。

引申一點,彩禮在當代有些許的定義改變。有些語境的彩禮不再指的是給女方家人,而是給女方本人,同時附上一定價值的嫁妝,婚後一起作為啟動資金來幫助一個新家庭。這種模式是完全可以接受的,但這種模式仍然有要求一個高於男方財力的天價數字的個例,就特別奇怪了。如果是嫌棄男方經濟條件太差的話,根本沒必要走到婚前談彩禮這一步了吧。

豆瓣小組中還是有很不錯的用戶,與「摳男」相對,一些極其張揚跋扈的女利主義者被掛了出來,如這個貼文。我對前任的印象,大概沒差貼子中的女主角多遠,算是一件悲哀的事吧。

當我為豐縣母親發聲,為拐賣婦女而憤慨時,這是真切在為女性權益,對現有的社會問題,去盡一份力。因為這傾斜得太厲害了,人人知道女性處於弱勢之中。但對一些養尊處優的公主們來說,她們何嘗領會過平權的真諦呢?

說了這麼多,於我而言,走出窪地,海闊天空。走出窪地之前,我也不會再去摻和兒女情長的瑣事,徒讓自己憤怒以外,沒有任何意義。在此也感謝一位女性友人這段時間一直與我分享看法,讓我明確這只是個人的問題,世上也有她這樣真正懂得平權的人存在。